预计将大型ggplot打印到PDF会导致RSession内存膨胀吗?我有一个大约72兆字节的ggplot2对象。打印到PDF时,我的RSession增长到2 gig以上。这是预期的吗?有没有办法优化性能?我发现得到的PDF很大~25meg,我必须使用外部程序将它们缩小(50kb,没有视觉损失!)。有没有办法用较低质量的图形打印到PDF?或者也许是一些我没有考虑的打印或ggplot参数?
答案 0 :(得分:7)
对于大型数据集,我发现在汇总ggplot
之前预处理数据很有帮助(即使ggplot
提供了相同的计算)。
ggplot
必须非常一般:它无法预测您希望稍后添加的统计数据或地理位置,因此很难对其进行优化(拆分 - 应用 - 结合策略可以导致爆发中介内存需求)。 OTOH,你知道你想要什么,可以相应地预先计算。
大pdf表示您要么有大量的过度绘图,要么生成的对象太小而无法看到。在这两种情况下,您都可以通过应用适当的摘要统计信息(例如hexbin或boxplot而不是scatterplot)获得很多收益。
我认为,如果没有您正在做的事情的详细信息,我们无法告诉您更多信息。因此,请创建一个最小的示例和/或上传您正在生成的压缩图。
答案 1 :(得分:3)
在解决问题的第二部分时,R不会尝试优化PDF。如果你过度绘制很多分数,这会导致一些荒谬的行为。您可以使用qpdf对PDF进行后处理。
通过传闻解决第一个问题,似乎中型数据集上的图表占用了大量内存,但这仅仅是我的经验。其他人可能对于为何或更多事实有更多的意见。
答案 2 :(得分:0)
以png等位图格式保存可以大大减少文件大小。请注意,这仅适用于最终图像的某些用途,特别是,就PDF格式而言,它无法放大。但如果最终图像尺寸已知,则它可能是一种有用的方法。