窗口调整大小后Tkinter回调中的Matplotlib异常

时间:2015-02-13 15:06:35

标签: python exception matplotlib tkinter resize

我对pyplot窗口有问题。当我在绘图完成后尝试更改窗口大小时,我得到以下异常:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:\Python27\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 277, in resize
    self.resize_event()
  File "C:\Python27\lib\site-packages\matplotlib\backend_bases.py", line 1788, in resize_event
    self.callbacks.process(s, event)
  File "C:\Python27\lib\site-packages\matplotlib\cbook.py", line 540, in process
    proxy(*args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\cbook.py", line 415, in __call__
    return mtd(*args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 859, in _handle_resize
    self._init_draw()
  File "C:\Python27\lib\site-packages\matplotlib\animation.py", line 1077, in _init_draw
    self._draw_frame(next(self.new_frame_seq()))
StopIteration

绘图由:

完成
self.ani = animation.FuncAnimation(self.fig, self._set_data, self._is_running(), interval=20, repeat=False, blit=True)
plt.show()

绘图完成后一切正常。最大化窗口后,抛出异常,窗口最大化但全部为灰色(无绘图)。然后我再次改变它的大小,一切都恢复正常,绘制了绘图。有人能指出我的错误或在哪里寻找答案?

操作系统:Windows 7
Python:2.9 32b
Matplotlib ver:1.4.2,后端:TkAgg

1 个答案:

答案 0 :(得分:1)

在使用大量数据时,我遇到了类似的问题(在Fedora上)。但是有不同的错误:OverflowError: In draw_path: Exceeded cell block limit。保存具有高dpi分辨率的图像时出现同样的错误,如plt.savefig('example.png', dpi=282)。低dpi参数没有错误。

我在https://github.com/matplotlib/matplotlib/issues/5907

找到了我的问题的解决方案

所以,基本答案是:

尝试:

import matplotlib as mpl
mpl.rcParams['agg.path.chunksize'] = 10000 # the default is 0

您可以在matplotlibrc文件中更改它以使其成为默认值。您可以在以下位置找到matplotlibrc位置:

matplotlib.matplotlib_fname()

然后您可以更改agg.path.chunksize参数,取消注释该行并设置新的默认值:

agg.path.chunksize : 10000

http://matplotlib.org/users/customizing.html