2012-10-21 74 views
1

可能嗎?下面的代碼說明了什麼我想做的事:在MATLAB的終端仿真模式下打印透明圖形

xdata = [0 1 2]; 
ydata = [0 1 0]; 
h = patch(xdata,ydata,'w'); 
set(h, 'FaceAlpha', 0.2); 
print -dpng myfig 

如果我使用選項-nodisplay啓動MATLAB和運行上面的代碼,MATLAB只是給了我一個核心轉儲。我認爲MATLAB應該比沒有進一步解釋的崩潰要好一些,但我知道這是由於在終端仿真模式下opengl和zbuffer渲染器都不可用。

我通過繪製.svg格式的透明數字來解決這個問題,但這不是我理想的解決方案。我的MATLAB腳本正在生成帶有許多嵌入式圖形的HTML報告,並且在渲染包含多個(相對複雜的).svg圖像的頁面時,大多數瀏覽器執行得非常差。那麼,有沒有人知道更好的解決方案?

+0

可能的重複:http://stackoverflow.com/questions/1853259/save-matlab-invisible-plot-under-terminal-as-an-image-with-相同尺寸 – Yamaneko

+0

@VictorHugo不是真的。我沒有任何問題可以在終端模式下保存/打印隱形人物,只要它們不包含任何透明元素。這是什麼打破了MATLAB的透明度問題,即如果你刪除我的代碼中的第四行,一切正常。 –

回答

0

一種間接地解決這個問題是打印在透明的數字到.svg文件使用plot2svg(),然後使用Inkscape.svg文件轉換爲.png.pdf或通過Inkscape支持的任何其他格式。 Inkscape提供相當好的command line support,所以你可以很容易地編寫MATLAB的整個過程。 Inkscape可用於Windows,Linux和Mac OS X.