我发现python/matplotlib的最新更新打破了一个关键特性,即在代码执行期间定期更新或“刷新”matplotlib图的能力。下面是一个最小(非)工作示例。
import numpy as np
from matplotlib.pyplot import *
from time import sleep
x = np.array([0])
y = np.array([0])
figure()
for i in range(51):
gca().cla()
plot(x,y)
xlim([0,50])
ylim([0,2500])
draw()
show(block = False)
x = np.append(x,[x[-1]+1])
y = np.append(y,[x[-1]**2])
sleep(0.01)
如果我使用Python 3.4.3和matplotlib 1.4.3运行这个程序,我可以看到绘图不断更新,曲线随着程序的运行而增长。但是,将Python 3.5.1与matplotlib 1.5.3一起使用时,matplotlib窗口将打开,但不显示绘图。相反,它持续显示窗口“没有响应”,并且只在代码完成执行时显示最终的绘图。
我能怎么办?有什么方法可以使用最新版本来实现我想要的功能吗?
注意:如果有区别的话,我将在默认的空闲环境中运行这个。
最佳答案
那很有趣。我习惯于用不同的方式绘制互动图:
import numpy as np
import matplotlib.pyplot as plt
from time import sleep
x = np.array([0])
y = np.array([0])
plt.ion()
fig = plt.figure()
ax=fig.add_subplot(111)
ax.set_xlim([0,50])
ax.set_ylim([0,2500])
line, = ax.plot(x,y)
plt.show()
for i in range(51):
x = np.append(x,[x[-1]+1])
y = np.append(y,[x[-1]**2])
line.set_data(x,y)
plt.pause(0.01)
您(或其他人)是否可以检查Matplotlib 1.5中是否显示了相同的问题?