2013-04-24 89 views
4

我用下面的代碼在IPython的筆記本條形圖保存爲.png文件:
plt.savefig(filename, bbox_inches='tight')誤差bbox_inches =在matplotlib「緊」

它工作在我的電腦上,我曾嘗試在另一臺計算機上運行腳本。但是,當我嘗試在另一臺機器上運行它時,出現以下錯誤。

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 =「緊」的說法似乎解決錯誤並保存文件,但沒有圖像出現,只有一個完全空白的.png文件。

我確信我們的python,matplotlib和其他軟件包的版本都是一樣的。有沒有人遇到過這個?我認爲這可能是matplotlib中的一個錯誤,但那樣做沒有意義,因爲它在我的電腦上工作正常,而且我們有相同的版本。任何想法或建議?

回答

1

該錯誤。

ipython.exe notebook --pylab=inline 

要解決此問題,只需刪除'= inline'。

4

這通常意味着沒有圖形呈現在畫布上。這也解釋了爲什麼,當你的參數被刪除,沒有相應的圖像!例如:

import pylab 
pylab.savefig('test', bbox_inches='tight') 

產生一個類似的錯誤:IPython的內嵌運行時,製作

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

就我個人而言,我認爲這種行爲應該交給一個Exception而不是一個'assert',所以它可能需要一個bug報告。 – Hooked 2013-04-24 04:26:58

+0

因爲兩者都使用相同版本的python和matplotlib,你認爲會導致它在我的計算機上工作,而不是另一個? – 2013-04-25 22:52:35

+0

@OsmondBishop老實說,沒有看到產生幾乎不可能的錯誤的代碼。這就像告訴技工「我的車發出有趣的噪音,怎麼了?」不讓他們打開引擎蓋。如果您認爲我發現了問題,請標記爲正確,如果不是的話請澄清。或者更好的,問一個新問題! – Hooked 2013-04-26 00:40:47

3

我有非常相同的錯誤信息。我通過gui顯示圖像,然後保存它,從而產生錯誤。我解決它首先保存它,然後才顯示它。

1

在我自己的代碼,我通過在數字呼叫savefig,而不是從pyplot(plt.savefig())「解決」這個問題,即:

fig.savefig(filename, bbox_inches='tight') 

其中figmatplotlib.figure.Figure一個實例。這對我來說不是問題,因爲ipython,而是源於嘗試更新和繪製長循環中的數字。