6

error in sys.exitfunc我在使用 matplotlib 时不断得到。例如,以下代码将它用于 matplotlib 1.3.0 / Python 2.7.3 / Ubuntu 12.04.3 LTS

from matplotlib.pyplot import figure, show
from numpy.random import random
fh = figure(figsize = (15, 10, ))
ax = fh.add_axes((.1, .1, .8, .8, ))
ax.scatter(random((100, )), random((100, )))
fh.show()

这产生

Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/_pylab_helpers.py", line 86, in destroy_all
    manager.destroy()
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_gtk3.py", line 427, in destroy
    self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/_pylab_helpers.py", line 86, in destroy_all
    manager.destroy()
  File "/usr/local/lib/python2.7/dist-packages/matplotlib/backends/backend_gtk3.py", line 427, in destroy
    self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'

这种情况发生在程序在没有 的情况下终止的任何时候show(),包括引发不相关的错误时。

如果我使用show()而不是fh.show(),我不会收到此错误。我可以这样做,但是这个错误在很多地方都会弹出,我更愿意解决它(我希望能够在不显示数字的情况下退出)。

我尝试了其他不可用、没有显示或给出相同错误的后端(这是 GKT3Agg)。

4

5 回答 5

4

我有同样的错误。在我的程序末尾使用 matplotlib.pyplot.close() 修复它。也许这对你有用?

于 2013-11-05T14:39:29.210 回答
1
plt.plot(return_array, risk_array)
plt.title('Pareto Front for '+ r'$\lambda \in$ [0.0, 1.0]')
plt.xlabel('Return')
plt.ylabel('Risk')
plt.axis([0.02, 0.05, 0.01, 0.016])

仅使用上面的代码会出错但添加

matplotlib.pyplot.show()

最终对我有用

于 2013-11-21T22:50:09.643 回答
0

这是我绕过它的可怕技巧:

 import matplotlib.pyplot as plt

 # your use of matplotlib here where you don't use the plot.show() function

 try:
   plt.close()
 except AttributeError, e:
   pass
于 2014-08-16T22:27:21.277 回答
0

从http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.3.1/下载 matplotlib-1.3.1.tar.gz

cd matplotlib-1.3.1

sudo python setup.py install

在安装之前

sudo apt-get install libfreetype6-dev

sudo apt-get install python-dev

sudo apt-get install libevent-dev

sudo apt-get install libpng-dev
于 2014-02-19T14:35:54.537 回答
0

我有同样的错误,ShikharDua 的解决方案为我解决了这个问题。我的系统:ubuntu 13.10 64 位。

我想运行一个示例代码,该代码最后没有调用该plt.show()函数,导致: AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'

plt.show()有趣的是,在 ipython ifpylab之前调用过相同的代码,没有, 。

编辑:好的,我刚刚读到,您已经在问题中提到了这一点。所以,这对你来说并不是一个真正的解决方案。但是,对于想知道为什么某些示例代码不起作用的初学者来说,这是一个解决方案。

于 2014-03-06T09:53:49.223 回答