如何用matplotlib

时间:2016-07-13 18:16:12

标签: python numpy matplotlib

我正在做一些处理,我想绘制进度。我知道我的总运行次数,我每运行100次计算结果,我想每次生成一个新的图。所以,我的代码看起来像这样

start = time.time()
speeds = []
for step in range(steps):
    do_my_stuff()
    if step % 100 == 0:
        speeds.append((step + 1) / (time.time() - start))
        x = np.arrange(steps)
        y = np.array(speeds)
        plt.plot(x, y, 'ro')

当然,我得到“x和y必须具有相同的第一维”错误。这似乎是一个简单而常见的问题,但由于某种原因,我找不到一个现成的解决方案。我可能不是谷歌搜索正确的事情。我错过了什么?

更新#1:让自己更清楚一点。我想在我的过程中每100次迭代重绘一次。我希望情节能够反映当前累积的速度点。我希望它从0级扩展到最大级,我希望它在没有计算速度的情况下是空的。

1 个答案:

答案 0 :(得分:0)

我会以交互方式绘制每对x和y,并将绘图的极限设置为所需的值。如果以后需要,您仍然可以附加数据。看看这个例子:

import time
import matplotlib.pyplot as plt
import matplotlib

plt.ion()

fig = plt.figure(1,figsize=(5,5))
ax  = fig.add_subplot(111)
steps = 1000
ax.set_xlim(0,steps)
ax.plot(1,1)
plt.draw()

start = time.time()
speeds = []
for step in range(steps):
    #Your stuff here
    if step % 100 == 0:
        speed = (step + 1.0) / (time.time() - start)
        plt.plot(step, speed, 'ko')
        plt.draw()
        plt.pause(1)