2012-03-29 148 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')