提高半大直方图的ggsave速度

时间:2019-03-25 06:40:40

标签: r ggplot2

我有一个data.frame dfs

d1 <- data.frame(x=data1, id="a")
d2 <- data.frame(x=data2, id="b") 
dfs <- data.frame(rbind(d1, d2)) 

包含〜2 * 10 ^ 9行(每个data1和data2中的〜10 ^ 9)。我正在使用ggplot()准备一些直方图:

gg1 <- ggplot(data=dfs, aes(x=x)) + geom_histogram(aes(y=..count../sum(..count..), binwidth=0.1, fill=id) + xlim(0,20)
gg2 <- ggplot(data=dfs, aes(x=x)) + geom_histogram(aes(y=..density..), fill=id, binwidth=0.1) + xlim(0,20)

这需要几秒钟来运行。但是,当我要保存东西时,它需要20到30分钟,大约需要40GB的内存。我正在使用ggsave(),如下所示:

ggsave(filename="bla.png", plot=marrangeGrob(list(gg1, gg2, nrow=1, ncol=2, top=NULL), device="png")

我尝试将dpi降低到默认值以下,并尝试使用ggsave参数中的尺寸(widthheight)来避免运气。

我很困惑,因为一旦计算出箱的位置和计数(即一旦定义了gg1和gg2),剩下的就是绘制几个矩形(准确地说是200个),对吗?为什么保存需要这么长时间,并且可以更快地完成此过程?

我注意到ggplot_build(gg1/gg2)$data[[1]]中有一堆数据,对于该绘图来说,这似乎并不是严格必要的,但没有那么多。

0 个答案:

没有答案