我想将绘图从 svg 设备复制到网格对象。grid.echo()
文档说它与当前设备相呼应,但使用网格图形绘制。
但是,以下方法不起作用:
svg()
plot(1:10)
print(dev.cur())
grid.echo()
a = grid.grab()
dev.off()
print(dev.cur())
grid.draw(a)
上面的打印输出是:
svg
2
null device
1
Warning message:
In grid.echo.recordedplot(recordPlot(), newpage, prefix, device) :
No graphics to replay
如您所见,当前设备是调用grid.echo()
之前的 svg 设备,但它仍然没有找到任何要回显的内容。 因此,由 'grid.grab() 返回的a
为空。我已经在pdf设备上尝试了同样的事情,但没有成功。
我做错了什么?
这是您的预期行为吗?
library(gridGraphics)
svg()
plotfun <- function() plot(1:10)
print(dev.cur())
grid.echo(plotfun)
a = grid.grab()
dev.off()
print(dev.cur())
grid.draw(a)