2013-10-23 37 views
0

所以我在Python 2.7.5中使用matlibplot :: Anaconda 1.7.0(64位) 我的matlibplot.rc文件中唯一未註釋的行是:如果顯示未調用,Matplotlib圖形不能正確呈現

figure.figsize : 10, 5 # figure size in inches 
figure.dpi  : 80  # figure dots per inch 
figure.facecolor : 1 # figure facecolor; 0.75 is scalar gray 
savefig.dpi   : 80  # figure dots per inch 
savefig.facecolor : white # figure facecolor when saving 

如果我稱之爲:

plt.savefig(name, bbox_inches=0) 
plt.show() 

一切從顯示工作正常

輸出從savefig

輸出:

但是,如果我只是註釋掉秀行相同的文件看起來像這樣:

這是怎麼回事???我怎樣才能解決這個問題?

+0

請參閱http://stackoverflow.com/questions/14254379/how-can-i-attach-a-pyplot-function-to-a-figure-instance/14261698#14261698瞭解狀態機vs vs OO接口到mpl。 – tacaswell

+0

,你可以發佈足夠的代碼來重現此?被接受的答案可能有效,但並不能解釋發生了什麼。 – tacaswell

回答

-1

以前的數字很可能與當前數字重疊,尤其是如果您堅持不懈。

兩個簡單的方法來解決這個問題:在保存後

pylab.hold(False) # clears graph 
pylab.hold(True) # restores to state you want 

或明確地清除圖:繪製以清除圖形之前

切換保持

pylab.save(...) 
pylab.close() 

原因你不用show看不到這種行爲的是,當你關閉顯示的數字時,會調用隱含的close

+0

是的,就是這樣。謝謝 – arghdos

+0

我不明白你說'pylab.hold(False)'清除了這個數字是什麼意思。這應該只是在'axes'對象中切換一個bool。 – tacaswell

+0

此外,在文件保存到磁盤之前,不要調用'close',所以我不明白這會如何影響保存的圖。 – tacaswell