有没有办法将 grob 直接保存到 rasterGrob?

Is there a way to save a grob directly to a rasterGrob?

我正在绘制几个 ggplot2 对象并将它们放置在对 'pdf' 设备的调用中的 grid.arrange 上。我发现,如果我首先对绘图进行栅格化,PDF 的性能会提高大约十亿倍(生成速度更快,渲染速度更快)。所以在并行 dlply 循环中,我使用 ggsaveggplot2 写为 PNG,然后使用 readPNG 将其读回并 rasterGrob将 return 转换为 dlplydlply 将其放入 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? 回答中概述的那样