在代码执行期间更新matplotlib图

时间:2016-10-03 14:54:40

标签: python matplotlib plot

我发现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运行该程序,我可以看到该图不断更新,并且曲线随着程序的运行而增长。但是,使用带有matplotlib 1.5.3的Python 3.5.1时,matplotlib窗口会打开,但不会显示该图。相反,它不断显示窗口“没有响应”,只在代码完成执行时显示最终的图。

我该怎么办?有没有办法使用最新版本实现我想要的功能?

注意:如果这会产生影响,我会从默认的IDLE环境运行它。

1 个答案:

答案 0 :(得分:0)

这很有趣。我习惯于以不同的方式绘制交互式图:

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.draw()
    sleep(0.01)

您(或任何人)可以检查这是否在Matplotlib 1.5中显示相同的问题?