2009-07-22 58 views
5

我有一個包含數百個項目的直方圖,爲此我繪製了Q-Q圖。這導致2.5兆字節大的EPS。對於僅包含在出版物中並且不會以100倍放大率查看的數字來說,這太過分了。以EPS格式縮小地塊的尺寸

在R中有什麼選擇以某種方式輸出更小的EPS?我搜查了文檔無濟於事。或者說,我的最佳選擇是,例如,以300 dpi的分辨率對它進行光柵化處理?如果是這種情況,那麼對於這項工作的任何工具建議?

的情節的R代碼裏面是沒有任何幻想:

postscript(filename) 
qqnorm(n, main=title)) 
qqline(n) 
dev.off() 

編輯:衛生署!我的問題提到輸出EPS,然後將其轉換爲一些光柵格式。當然,我可以從R中首先生成PNG。

回答

3

I」我剛剛嘗試了幾件不起作用的東西 - 我將它們包括在這裏以挽救其他人浪費時間。作爲參考,我在上面的代碼中設置了n <- rnorm(1e5)

東西不起作用:

  1. 設置colormodel <- "gray"

  2. 使用不同的pch值。 (其他一些價值增加文件的大小,但我沒有發現該減少它。)

  3. 設置useKerning = FALSE

  4. 更改寬度和高度設置。

  5. 使用pdf代替postscript。

  6. 使用Cairo軟件包中的CarioPS。

鑑於此,我認爲你不可能使用矢量格式來減小文件大小。這意味着你將不得不使用光柵格式(最可能是PNG)。

1

那麼,EPS只是包含繪製繪圖的說明,所以它的大小將在很大程度上取決於您擁有多少個數據點。在使用壓縮的PDF中,它可能更小,但是最好的辦法可能是使用光柵格式,該格式可能會比這更小。

我會懷疑EPS R的生成已經儘可能小了(我確定它們在Postscript中有一個自己的函數來處理單字符名稱等數據,因爲這是相當常見的實踐)。我懷疑有很多方法可以優化。不過,我可能會誤解,但有可能R是唯一具有足夠高級信息來合理壓縮輸出的程序。

+0

PDF結果爲1 MB大小的文件,仍然太大。我想我可以應用數據集抽樣來減少點數,但是很難不丟失一些有趣的離羣值點。 – 2009-07-22 08:13:51

3

您有三種選擇。

  1. 接受大文件大小
  2. 保存在非矢量格式文件的一些PNG
  3. 對數據的隨機樣本創建QQplot。幾百個點的隨機樣本應該給出類似的QQplot。

    後記(文件名) 桑普< - 樣品(N,大小= 200) qqnorm(SAMP,主標題=)) qqline(SAMP) dev.off()

2

在本次討論中的R列表link text我瞭解了pdftk。用n= 1e5將pdf尺寸從6mb減少到600k。很簡約!

2

在GS視圖中,將我們的文件轉換爲pdf,然後再轉換爲PS或EPS,最終文件的大小減少5-7倍。

+0

你能提供一行bash代碼來做到這一點嗎? – toxicate20 2012-11-23 15:32:24

1

OP通過直接生成PNG文件解決了這個問題。我必須使用EPS,因爲PNG和其他格式會混淆圖像。無論如何,我必須將其轉換爲EPS以包含在LaTeX文件中。

我用GIMP導入了從R圖像函數生成的10 MB eps文件。然後旋轉,展平,並保存爲300KB的eps文件。展平將所有圖層合併到一個圖層中,並移除透明度的Alpha通道。經過這個轉換後,LaTeX很容易處理。

在轉換之前,Ghost Script中的圖像渲染非常緩慢,在epsviewer中完全無法渲染。 GIMP使用Ghost Script作爲前端,所以導入速度很慢,但是一旦導入,所有的處理和渲染速度都非常快。