有没有办法将 grob 直接保存到 rasterGrob?
Is there a way to save a grob directly to a rasterGrob?
我正在绘制几个 ggplot2
对象并将它们放置在对 'pdf' 设备的调用中的 grid.arrange
上。我发现,如果我首先对绘图进行栅格化,PDF 的性能会提高大约十亿倍(生成速度更快,渲染速度更快)。所以在并行 dlply
循环中,我使用 ggsave
将 ggplot2
写为 PNG,然后使用 readPNG
将其读回并 rasterGrob
将 return 转换为 dlply
。 dlply
将其放入 grobs
的列表中,然后 grid.arrange
将其绘制到 PDF 设备。
其中一些看起来很笨拙,所以总的来说,有没有更好的方法?但真正让我烦恼的是,当我对它们所做的一切都是将它们读回时,将 PNG 写入磁盘。有没有办法将 grob 直接保存到 rasterGrob?
plot.list <- dlply( ... {
ggsave(filename= fname
,plot= my.plot
,device= "png"
,scale = 1, width= 1.1, height= 2.125, units = "in"
,dpi = dpi)
# return it as a list of rasters
rasterGrob(readPNG( source= fname, info= TRUE))
}
我最终使用了 Cairo 图形设备,正如@Yang 在@MrFlick
所建议的 In R, how to plot into a memory buffer instead of a file? 回答中概述的那样
我正在绘制几个 ggplot2
对象并将它们放置在对 'pdf' 设备的调用中的 grid.arrange
上。我发现,如果我首先对绘图进行栅格化,PDF 的性能会提高大约十亿倍(生成速度更快,渲染速度更快)。所以在并行 dlply
循环中,我使用 ggsave
将 ggplot2
写为 PNG,然后使用 readPNG
将其读回并 rasterGrob
将 return 转换为 dlply
。 dlply
将其放入 grobs
的列表中,然后 grid.arrange
将其绘制到 PDF 设备。
其中一些看起来很笨拙,所以总的来说,有没有更好的方法?但真正让我烦恼的是,当我对它们所做的一切都是将它们读回时,将 PNG 写入磁盘。有没有办法将 grob 直接保存到 rasterGrob?
plot.list <- dlply( ... {
ggsave(filename= fname
,plot= my.plot
,device= "png"
,scale = 1, width= 1.1, height= 2.125, units = "in"
,dpi = dpi)
# return it as a list of rasters
rasterGrob(readPNG( source= fname, info= TRUE))
}
我最终使用了 Cairo 图形设备,正如@Yang 在@MrFlick
所建议的 In R, how to plot into a memory buffer instead of a file? 回答中概述的那样