2011-09-27 69 views
2

我一直在試圖使用gnuplot繪製一個包含約500,000個值的數據集。儘管繪圖工作進展順利,但它生成的SVG文件太大(大約25 MB),需要很長時間才能渲染。有什麼方法可以改善文件大小?優化Gnuplot的SVG輸出

我對SVG文件格式有模糊的理解,我意識到這是因爲SVG是一種矢量格式,因此必須單獨存儲500,000個點。

我也試過Scour並重新打印SVG沒有任何成功。

+0

你是什麼意思,你試過沖「沒有任何成功」?至少,將精度設置爲較低的值應該會減小文件大小(但不是渲染時間)。 – Phrogz

回答

3

才能使你SVG文件的時間是成正比的在它的信息量。因此,加速渲染的唯一方法是減少數據量

我認爲使用已經生成的SVG文件是一件很乏味的事情。我會建議減少gnuplot繪圖的數據量。

也許every或其他一些削減數據可以幫助像數據分割成多條曲線...

+1

使用'every'關鍵字的一個問題是我認爲它可以在數據集中引入別名。爲了減少時間序列中的數據量,您通常要刪除高頻數據,而不是每跳10個數據點。偶爾,'every'關鍵字可能會產生誤導性的圖形。 – Tom

+0

@Tom我同意減少情節中的點數可能會引起誤解。但我認爲這也取決於你想表現出什麼情節。有時候,這可能是一個信號的高頻率,你仍然可以使用'every'看到^^...我想...... – Woltan

1

我會建議保持它的矢量圖形格式,然後選擇適合你把它放在文件的決議後來。

這樣做的主要原因是,您可能有一天會在海報中使用該圖像(例如),並以當前分辨率的數百倍來打印該圖像。

我通常會將我的最終pdf轉換爲djvu格式。

pdf2djvu --dpi=600 -o my_file_600.djvu my_file.pdf 

這讓我指定整個文檔的分辨率(包括文本),而不是分散在不同的分辨率。

它的缺點是確實需要原始文檔的大型pdf。然而,如果你是latex來製作你的原始PDF格式,你可以使用draft選項,直到完成後才能減輕這個影響,這樣在你的日常編輯中不會導入圖像圖像會很煩人)。