Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不阻止执行的情况下显示和更新MatPlotLib图形_Python - Fatal编程技术网

Python 在不阻止执行的情况下显示和更新MatPlotLib图形

Python 在不阻止执行的情况下显示和更新MatPlotLib图形,python,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

我想绘制一个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()
导入matplotlib.pyplot作为plt
导入时间
def ShowGraph():
n=2
j=1
而j 1:
plt.draw()
其他:
plt.show(块=假)
时间。睡眠(1)
n+=1
j+=1
ShowGraph()