最開始使用Matplotlib,一是因為它不需要像Matlab一樣花很長時間啟動一個圖形界面,二是它可以直接保存為.eps格式。
在圖像顯示出來之后,在左下角有幾個按鈕,最后一個就是保存,在保存的對話框選擇.eps格式即可。另一種方式就是在程序里面使用pyplot.savefig(name,format="eps"),可以用format指定格式為eps,也可以不使用format,而是寫在name里面,它會自動從name里面找到擴展名來決定格式。
雖然這樣得到了.eps格式的圖像,但是它的周圍有空白的地方,有兩種方法來去掉這些空白,一種方法是使用gsview,在windows上,一般會使用這個工具,另一種方法是使用epstool(http://pages.cs.wisc.edu/~ghost/gsview/epstool.htm),我使用的代碼是
print target tp0 = "tp0" + target tp1 = "tp1" + target plt.savefig(tp0,dpi=160) cmd0 = "epstool -b -t4 --output %s %s" %(tp1,tp0) cmd1 = "epstool -p --output %s %s" %(target,tp1) cmd2 = "rm tp*" os.system(cmd0) os.system(cmd1) os.system(cmd2)
一般情況下,輸出的eps文件都可以用的,但有時候卻會出現問題,比如在latex編譯得到的pdf文件里圖像只有一部分,或者全是空白等,這主要問題是eps格式里面的boudningbox有負值,這是一個比較麻煩的問題,目前還沒有找到好的解決辦法,雖然epstool說是可以調整,重新計算boundingbox,但是依然會有負值,暫時的解決辦法就是將圖片縮小,比如以前是figsize=(16,8),縮小為figsize=(9,4.5)。目前測試的結果就是寬度超過10,boundingbox就會出現負值,而比9大一點還是可以的,一般取9就可以了,縮小的時候,字體也要相應縮小,不然使用默認字體,就出出現字相對圖像太大的情況。
之前提到了,可以設置fig的boundingbox,但沒有深入研究,有興趣的可以繼續探討。
至此,對Matplotlib的介紹就結束了,以后或許會用到新的東西,到時候在進行介紹。
