2011-07-27 52 views
3

是否期望將大型ggplot打印到PDF會導致RSession內存膨脹?我有一個大約72兆字節的ggplot2對象。打印到PDF時,我的RSession增長到2 gig。這是預期的嗎?有沒有方法來優化性能?我發現由此產生的PDF是巨大的〜25meg,我不得不使用一個外部程序縮小(50kb沒有視覺損失!)。有沒有辦法打印到PDF質量較低的圖形?或者也許一些參數打印或ggplot,我沒有考慮?ggplot2 - 打印劇情氣球內存

回答

7

對於大型數據集,我發現在整理ggplot(即使ggplot提供相同計算)之前預處理數據很有幫助。

ggplot必須非常一般:它不能預測什麼統計或GEOM要添加以後,所以它是非常困難的有優化的事情(分拆式應用,結合策略可能會導致爆炸intermediat內存要求)。 OTOH,你知道你想要什麼,並可以相應地進行預先計算。

大的pdf表示您要麼有很多重疊繪圖,要麼會產生太小而無法看到的對象。在這兩種情況下,通過應用適當的彙總統計數據(例如,hexbin或boxplot而不是scatterplot)可以獲得很多收穫。

我想我們不能告訴你更多沒有你在做什麼的細節。因此,請創建一個最簡單的示例並/或上傳正在製作的壓縮圖。

+0

你是對的,在這種情況下,我有兩個overplotting和對象太小,看不到。謝謝! – SFun28

3

爲了解決問題的第二部分,R並未嘗試優化PDF。如果你重疊了很多點,這會導致一些荒謬的行爲。您可以使用qpdf來後處理PDF。

從傳聞的第一個問題來看,似乎中型數據集上的圖表佔用了大量內存,但這僅僅是我的經驗。其他人對於這是否是如此,可能會有更多的意見。

0

以像png這樣的位圖格式保存可以大大減少文件大小。請注意,這僅適用於最終圖像的某些用途,特別是,它不能放大到PDF格式。但是如果知道最終的圖像大小,它可能是一種有用的方法。

+0

據我所知,它並沒有減少渲染時間,但?而PDF後處理應該讓你下降到相似的文件大小,而不會失去矢量化。 –

+0

不錯,不會減少渲染時間。我還沒有嘗試PDF後處理,但它聽起來很有用;使用png已經足夠滿足我的需求。 – Aaron

+0

如果這一切都需要,直接進入PNG(或其他位圖格式)是一個更小的步驟。 – Aaron