为什么我们需要FuncAnimation?

时间:2018-02-09 16:49:37

标签: python animation matplotlib

在一个关于使用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笔记本中运行此代码。

1 个答案:

答案 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关闭。