关于如何使用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)
现在,图形是在每次迭代后绘制的。