显示和更新MatPlotLib图形而不阻止执行

时间:2016-04-05 16:39:38

标签: python

我想绘制一个随时间更新的MatPlotLib.PyPlot图,并且不会阻止程序执行。我不希望用户每次更新时都必须按一个键才能显示新图表。

我认为plt.show(block=False)是我想要的。但是,我的代码没有按预期执行。

这是我的代码:

import matplotlib.pyplot as plt
import time

def ShowGraph():
  n = 2
  while True:
    x = [i for i in range(n)]
    y = [i for i in range(n)]
    plt.plot(x, y, 'r-')
    plt.ylim([0, 10])
    plt.xlim([0, 10])
    plt.show(block=False)
    time.sleep(1)
    n += 1

ShowGraph()

这应该每秒绘制一个新图表,红线每次都会变长。但是,所有显示的内容都是第一次调用plt.show()后的图表。我做错了什么?

1 个答案:

答案 0 :(得分:1)

当我按原样尝试你的代码时,它陷入无限循环。因此,我稍微修改了您的代码以使其正常工作 主要是,您需要在循环的第一次迭代后使用data_toggle更新图形。非交互模式下的plt.draw()仅按原样显示图表,即使使用plt.show()也不会更新图表。您仍需要block=False来更新数字。

plt.draw()