Matplotlib和Jupyter笔记本:每次循环迭代输出的新绘图



关于如何使用matplotlib有很多问题,尤其是关于如何在每次循环迭代中更新或输出新图表。特别是这个问题是关于matplotlib和jupyter笔记本

例如:

使用循环绘制n个图表Python

答案如下:

import matplotlib.pyplot as plt
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i in range(len(x)):
plt.figure()
plt.plot(x[i],y[i])

这似乎奏效了。。。

直到我们添加其他内容:

例如,在每个绘图后添加一个sleep语句:

import matplotlib.pyplot as plt
from time import sleep
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i in range(len(x)):
plt.figure()
plt.plot(x[i],y[i])
sleep(2)

突然间它就不起作用了。

也可以使用任何形式的打印来查看相同的问题

import matplotlib.pyplot as plt
from time import sleep
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i in range(len(x)):
plt.figure()
plt.plot(x[i],y[i])
print('loop: ', i)

那么,我如何在jupyter笔记本中为每个循环打印出一个新的绘图呢?

您必须在每次迭代后调用plt.pause(1),以告诉matplotlib暂停1秒并重新绘制图形(https://matplotlib.org/3.1.1/api/_as_gen/matplotlib.pyplot.pause.html)

import matplotlib.pyplot as plt
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
for i in range(len(x)):
plt.figure()
plt.plot(x[i],y[i])
plt.pause(1)

现在,图形是在每次迭代后绘制的。

最新更新