我正在绘制几个ggplot2
个对象,并将它们放在grid.arrange
内,以打电话给一个< pdf'设备。我发现如果我首先光栅化这些图,那么PDF的执行速度会提高十亿倍(生成速度更快,渲染速度更快)。因此,在并行的dlply
循环中,我使用ggsave
将ggplot2
写为PNG,然后使用readPNG
将其读回{{1转换将其返回rasterGrob
。 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))
}
答案 0 :(得分:0)
我最终使用了@MrFlick建议的@Yang的In R, how to plot into a memory buffer instead of a file?答案中概述的Cairo图形设备