此代码(来自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
循环中进行非阻塞图的干净方法是什么?
答案 0 :(得分:0)
我的情节也有同样的问题。我做的是,使用try ..except以避免在控制台中显示该错误。它不是解决方案,而是优雅地结束程序的一种方式。
import Tkinter as tk
while plt.get_fignums():
try:
plt.pause(0.2);
except tk.TclError:
break;