我在ipython笔记本中使用以下代码将条形图保存为.png文件:
plt.savefig(filename, bbox_inches='tight')
它适用于我的计算机,我尝试在另一台计算机上运行该脚本。但是当我尝试在另一台机器上运行它时,我收到以下错误。
AssertionError
---> 119 plt.savefig(filename,bbox_inches='tight')
C:\Python27\lib\site-packages\matplotlib\pyplot.pyc in savefig(*args,**kwargs)
---> 472 self.canvas.print_figure(*args,**kwargs)
C:\Python27\lib\site-packages\matplotlib\figure.pyc in savefig(self,*args,**kwargs)
---> 1363 self.canvas.print_figure(*args,**kwargs)
C:\Python27\lib\site-packages\matplotlib\backend_bases.pyc
---> 2054 bbox_inches = self.figure.get_tightbbox(renderer)
C:\Python27\lib\site-packages\matplotlib\figure.pyc in get_tightbbox(self,renderer)
---> 1496 _bbox = Bbox.union([b for b in bb if b.width!=0 or b.height!=0])
C:\Python27\lib\site-packages\matplotlib\transforms.pyc in union(bboxes)
---> 714 assert(len(bboxes))
AssertionError:
删除bbox_inches ='tight'参数似乎可以解决错误并保存文件但是没有图片,只有一个完全空白的.png文件。
我确保我们的python,matplotlib和其他软件包的版本都是一样的。有没有人遇到过这个?我认为它可能是matplotlib中的一个错误,但那样没有意义,因为它在我的计算机上工作正常并且我们有相同的版本。有什么想法或建议吗?
答案 0 :(得分:4)
这通常意味着没有数字呈现在画布上。这也解释了为什么当你删除参数时没有相应的图像!例如:
import pylab
pylab.savefig('test', bbox_inches='tight')
产生类似的错误:
pylab.savefig('test', bbox_inches='tight')
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 471, in savefig
return fig.savefig(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1185, in savefig
self.canvas.print_figure(*args, **kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1985, in print_figure
bbox_inches = self.figure.get_tightbbox(renderer)
File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1326, in get_tightbbox
_bbox = Bbox.union([b for b in bb if b.width!=0 or b.height!=0])
File "/usr/lib/pymodules/python2.7/matplotlib/transforms.py", line 675, in union
assert(len(bboxes))
答案 1 :(得分:3)
我收到了同样的错误消息。我通过gui显示图像然后保存它,这产生了错误。我先解决了这个问题,然后再保存它。
答案 2 :(得分:1)
运行ipython内联时出错。
ipython.exe notebook --pylab=inline
要解决此问题,只需删除'= inline'。
答案 3 :(得分:1)
在我自己的代码中,我已经解决了#34;这个问题是通过在图上调用savefig
,而不是从pyplot(plt.savefig()
)调用,即:
fig.savefig(filename, bbox_inches='tight')
其中fig
是matplotlib.figure.Figure
的实例。这对我来说不是问题,因为ipython
,而是源于尝试更新并在长循环中绘制数字。