2011-11-26 58 views
14

我期待將我的MATLAB圖導出爲高質量數字。具體來說,我想將其保存爲基於矢量的文件格式,如EPS或SVG。MATLAB和高質量EPS數字

I have tried print and saveas commands: 
saveas(h,'myFileName','epsc2'); 
print('-r150','-depsc2', 'myFilename'); 

儘管軸標籤確實是向量,但在所有情況下,這會產生圖表質量較差的部分。爲什麼MatLab在將其放入EPS之前做了一些可怕的渲染?質量差的情節在這裏

例子: http://users.ox.ac.uk/~pemb2372/myFileName.eps

編輯: 還值得一提的是,如果你使用的是蘋果從MATLAB觀看EPS文件,「預覽」應用程序可能導致內部圖形內容光柵化質量差,同時使軸和標籤保持向量化和高質量。這是非常具有誤導性的,但是當您在Inkscape中打開所述EPS文件時,質量實際上是矢量並且相當高。

編輯2: 我的大學託管帳戶已過期,因此您無法再查看該數字。只要說它在高質量的美麗軸線,刻度和標籤中顯示質量差的光柵式陰謀。

+7

我無法解釋「爲什麼」Matlab具有如此差的庫存功能,但您可能想嘗試[export_fig](https://sites.google.com/site/oliverwoodford/software/export_fig)。它在Matlab File Exchange中可用,並且幫助了我很多。如果您還沒有安裝ghostscript,您還需要安裝ghostscript。 – aganders3

+0

用於export_fig的+1。 –

+0

好的謝謝 - 我會研究這個並報告回 – jtromans

回答

9

Matlab可以以比EPS更好的質量導出爲PDF格式,但它有自己的設置邊緣和字體大小的注意事項。

編輯: 示例與EPS案例相似,如在例如的幫助中所解釋的。 print

saveas(gcf,'filename.pdf') 

print('-dpdf','filename.pdf') 

你可能也想看看你的身材的PaperSizePaperPositionPaperUnits屬性(通過的setget功能的裝置)。

編輯:另一種選擇是使用FileExchange上提供的功能之一,例如下面的@ user664303提到的功能之一。我個人最喜歡用於LaTeX的產品是matlab2tikz,其最新版本可從GitHub獲得。與TikZ的external圖書館一起,我認爲這提供了一些最好的圖表。 也許這也是最好的一提的是我已經自2012年

+0

你能提供一個例子嗎? – jtromans

+0

我添加了一些小例子,沒有什麼,因爲它們幾乎與EPS案例相同。 – Egon

+0

雖然很愚蠢,但我認爲這可能值得分享這個知識的核心。我在整個問題上遇到問題的部分原因是,Mac OS X上的「預覽」不能正確渲染圖像。這使他們看起來更糟糕,並加重了我的問題。課程,使用適當的圖像編輯器來處理您的文件! – jtromans

11

在MATLAB文件交換的export_fig功能是準確的出口數字,EPS和PDF一個合理可靠的方式(以及位圖積極參與matlab2tikz項目格式)在MATLAB中。

plot2svg函數也是來自文件交換,允許您以svg格式導出。它提供了一些額外的好處,例如能夠以矢量格式導出半透明斑點對象。

導出方法的比較在blog post中給出。

+2

+1用於export_fig。 – carlosdc

+0

'export_fig'是老闆。 –

12

我以爲我會分享我的問題,以及我如何克服它...

我得到了糟糕的結果,因爲我把錯誤的渲染器設置爲默認值。在我的startup.m中,我啓用了zbuffer渲染器。這是一個示例eps輸出。

Crop of output eps

我做了EPS輸出和:print(gcf,'-depsc2','filename.eps')。這個eps顯然是光柵化的。這讓我對matlab感到憤怒。然後,我有一個腦波 - 也許我的默認渲染器zbuffer干擾圖像保存過程。因此,添加一行:

set(gcf,'renderer','painters') 

和以前一樣運行打印命令,這裏是輸出:

Crop of second output eps

請注意,我只是把EPS的輸出文件的截圖在100%。我可以確認第二個圖像實際上是矢量。這裏是在MATLAB中選擇Renderers的一個很好的問題/解釋。

+1

感謝分享。這個基本問題真的不應該引起這麼多頭痛!=對每個人! – jtromans

+1

注意:對於print(..)命令的第二個參數,它應該是「-depsc2」,而不是「depsc2」。 –

+0

@EvgeniSergeev - 正確,我的不好!我已經編輯了這個更正。 –

0

我總是通過matplotlibpython庫獲得最終的圖表(應該插入到論文和出版物中的圖表)。

您可以下注生成的地塊的驚人質量,包括.pdf.eps兩種格式。