2012-03-29 312 views
0

我的電腦上Python的所有部分最近都是從Enthought學術軟件包安裝的,但是使用Pyscripter來編輯和運行代碼。我的學習曲線很早,所以很可能忽略了一些顯而易見的東西。Python的Matplotlib錯誤與savefig(新手)。

當我嘗試創建一個情節,並保存它,像這樣:

import matplotlib.pylab as pl 
pl.hist(myEst, bins=20, range=(.1,.60)) 
pl.ylabel("Freq") 
pl.xlabel("Success Probability") 
pl.title('Histogram of Binomial Estimator') 
pl.axis([0, 1, 0, 500]) 
pl.vlines (.34,0,500) 
pl.savefig('TestHist.png') 
pl.show() 

我得到這些錯誤:

Traceback (most recent call last): 
    File "<editor selection>", line 9, in <module> 
    File "C:\Python27\lib\site-packages\matplotlib\figure.py", line 1172, in savefig 
    self.canvas.print_figure(*args, **kwargs) 
    File "C:\Python27\lib\site-packages\matplotlib\backends\backend_wxagg.py", line 100, in print_figure 
    FigureCanvasAgg.print_figure(self, filename, *args, **kwargs) 
    File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 2017, in print_figure 
    **kwargs) 
    File "C:\Python27\lib\site-packages\matplotlib\backends\backend_agg.py", line 450, in print_png 
    filename_or_obj = file(filename_or_obj, 'wb') 
IOError: [Errno 13] Permission denied: 'TestHist.png' 

如果我拿出pl.savefig('TestHist')線一切正常,我可以看到我想要的陰謀,但當那條線在那裏時,我得到了錯誤。

我檢查過我的後端版本using pl.get_backend(),它返回'WXAgg',根據文檔應該能夠使用.png格式。

我也試過在savefig命令中包括明確的format='png'format=png,但仍然出錯。

任何人都可以給我如何繼續,或另一種方法來保存情節的意見?

回答

2

你的代碼沒有問題。我只是在我的機器上進行本地測試。問題出在這個錯誤:

IOError: [Errno 13] Permission denied: 'TestHist.png' 

你很可能試圖將文件保存在Python進程沒有權限訪問的地方。你在什麼操作系統上?你想在哪裏保存文件?

+0

謝謝。現在我明確地設置了目錄,一切正常。我一直在懶惰地使用Rstudio並設置它,以便工作目錄與腳本位置相同。我含蓄地假設這裏也是如此。 – user1301991 2012-03-30 18:08:54

1

如果它對別人有幫助,我犯了一個愚蠢的錯誤,沒有真正指定一個文件名,結果返回了同樣的錯誤信息,導致我回顧這個問題。

這裏是正在生成的錯誤代碼:

plt.savefig('C:\\Users\\bwarn\\Canopy', format='png') 

這是我校是解決(你會看到我指定了實際的文件和名稱)

plt.savefig('C:\\Users\\bwarn\\Canopy\\myplot.png', format='png')