从非默认设备复制带有grid.echo()的图

时间:2019-03-21 12:44:23

标签: r graphics

我想将绘图从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设备进行相同的操作,但没有成功。

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

这是您的预期行为吗?

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)