使用matplotlib更新带有循环的图

时间:2015-12-08 09:26:50

标签: python matplotlib plot

此代码(来自here)适用于绘制一些情节,并使用for循环中的新绘图进行更新:

import numpy as np
from matplotlib import pyplot as plt

plt.axis([-50,50,0,10000])
plt.ion()     # interactive mode on

X = np.arange(-50, 51)
for k in range(1,5):  
    print k 
    Y = [x**k for x in X]
    plt.plot(X, Y)
    plt.draw()
    plt.pause(1)

它有效,但它有2个(次要)缺点:

  • 警告信息:

      

    C:\ Python27 \ lib \ site-packages \ matplotlib \ backend_bases.py:2399:MatplotlibDeprecationWarning:使用默认事件循环,直到实现特定于此GUI的功能   warnings.warn(str,mplDeprecation)

  • 如果我在循环期间关闭主图窗口,我会得到:

      

    文件" C:\ Python27 \ lib \ lib-tk \ Tkinter.py",第964行,更新   self.tk.call('更新')
      _tkinter.TclError:无法调用"更新"命令:应用程序已被销毁

for循环中进行非阻塞图的干净方法是什么?

1 个答案:

答案 0 :(得分:0)

我的情节也有同样的问题。我做的是,使用try ..except以避免在控制台中显示该错误。它不是解决方案,而是优雅地结束程序的一种方式。

    import Tkinter as tk

    while plt.get_fignums():
        try:
            plt.pause(0.2);
        except tk.TclError:
            break;