我发现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中是否显示了相同的问题?

07-28 02:35
查看更多