【问题标题】:Is there a way to save a grob directly to a rasterGrob?有没有办法将 grob 直接保存到 rasterGrob?
【发布时间】:2019-11-23 02:41:51
【问题描述】:

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


【解决方案1】:

我最终使用了 @MrFlick 建议的 @Yang 的 In R, how to plot into a memory buffer instead of a file? 答案中所述的 Cairo 图形设备

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-26
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多