【发布时间】:2019-11-23 02:41:51
【问题描述】:
我正在绘制几个ggplot2 对象,并将它们放置在grid.arrange 上,调用“pdf”设备。我发现如果我先栅格化绘图,PDF 的性能大约要好十亿倍(生成速度更快,渲染速度更快)。所以在一个并行的dlply 循环中,我使用ggsave 将ggplot2 写入为PNG,然后使用readPNG 将其读回并使用rasterGrob 将其转换为dlply。 dlply 将其放入 grobs 列表中,grid.arrange 然后将其绘制到 PDF 设备。
其中一些看起来很笨拙,所以总的来说,有没有更好的方法?但真正让我烦恼的是,当我对它们所做的只是将它们读回时,将它们写入磁盘。有没有办法将 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))
}
【问题讨论】:
-
嗯。看起来并不容易。这可能会有所帮助:stackoverflow.com/questions/7171523/…。您将直接使用 Cairo 图形设备,而不是通过
ggsave -
我对这个问题表示同情(我一直想要一种栅格化特定绘图层的方法),但是如果您要栅格化整个图像,我不确定通过制作 pdf 可以获得什么而不是 png?
标签: r pdf ggplot2 rasterizing grob