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



我想绘制一个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()之后的图形。我做错了什么?

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

import matplotlib.pyplot as plt
import time
def ShowGraph():
    n = 2
    j = 1
    while j <= 10:
        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])
        if j > 1:
            plt.draw()
        else:
            plt.show(block=False)
        time.sleep(1)
        n += 1
        j += 1
ShowGraph()

相关内容

  • 没有找到相关文章

最新更新