Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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_Matplotlib - Fatal编程技术网

Python 使用matplotlib绘制更改的图形

Python 使用matplotlib绘制更改的图形,python,matplotlib,Python,Matplotlib,所以我一直在尝试通过一个循环得到一个更新每次迭代的图。我的代码的精简版本如下: 1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 x = np.linspace(0, 9, 10) 5 for j in range(10): 6 y = np.random.random(10) 7 plt.plot(x,y) 8 plt.show() 9 plt.pause(

所以我一直在尝试通过一个循环得到一个更新每次迭代的图。我的代码的精简版本如下:

  1 import matplotlib.pyplot as plt
  2 import numpy as np
  3 
  4 x = np.linspace(0, 9, 10)
  5 for j in range(10):
  6     y = np.random.random(10)
  7     plt.plot(x,y)
  8     plt.show()
  9     plt.pause(1)
 10     plt.clf()
我的问题是,在创建下一个绘图之前,我必须关闭每个绘图;看起来plt.show()上的绘图被卡住了,而我希望每秒都有一个新的绘图替换当前的绘图,而不需要我的交互。我咨询了以下问题:


但所有的解决方案似乎都不适合我。任何帮助都将不胜感激

您应该使用plt.ion()设置交互模式,并使用draw进行更新

import matplotlib.pyplot as plt
import numpy as np

plt.ion()
fig=plt.figure()

x = np.linspace(0, 9, 10)
for j in range(10):
    y = np.random.random(10)
    plt.plot(x,y)
    fig.canvas.draw()
    plt.pause(1)
    plt.clf()

请注意,它可能无法在所有平台上工作;我在Pythonista/ios上进行了测试,但没有达到预期效果

注 交互式模式在ipython和普通pythonshell中适用于合适的后端,但在空闲IDE中不起作用。如果默认后端不支持交互,则可以使用“什么是后端?”中讨论的任何方法显式激活交互后端