matplotlib中的bbox_inches ='tight'出错

时间:2013-04-24 03:37:02

标签: python matplotlib plot

我在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中的一个错误,但那样没有意义,因为它在我的计算机上工作正常并且我们有相同的版本。有什么想法或建议吗?

4 个答案:

答案 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')

其中figmatplotlib.figure.Figure的实例。这对我来说不是问题,因为ipython,而是源于尝试更新并在长循环中绘制数字。