在一个关于使用Matplotlib在Python中绘图的Coursera课程中,我被教导使用FuncAnimation
对象制作动画图。为什么这有必要?显而易见的技术是使用for
循环来更新每次迭代的绘图和暂停。这似乎更容易。
我试过这个,但它没有用。这是一个简单的例子:
import matplotlib.pyplot as plt
import numpy as np
import time
%matplotlib notebook
plt.plot([0, 1, 2], [0, 1, 0])
l = plt.gca().get_children()[0]
for i in range(5):
l.set_ydata([0, 1, i/10])
plt.show()
time.sleep(1)
结果是在延迟5秒后仅显示最终的图。为什么这不起作用?
编辑:我应该已经指定我在Jupyter笔记本中运行此代码。
答案 0 :(得分:0)
有关在jupyter笔记本中制作matplotlib图表的一般方法,请参阅Animation in iPython notebook。
因此应该注意,这里的问题只发生在使用python循环而不是内部%matplotlib notebook
类的jupyter笔记本中使用matplotlib.animation
后端时。
为了确保交互性,%matplotlib notebook
使用jupyter输出中自己的小应用程序创建matplotlib图。在此应用程序启动之前,当然不能与之交互。一旦启动此应用程序,就必须丢失与IPython笔记本中的python代码的连接。这种行为类似于python中的其他GUI:一旦GUI事件循环启动,python代码就会停止,直到GUI关闭。