Python - 停止FuncAnimation

时间:2014-02-24 21:46:07

标签: python matplotlib

有谁知道停止FuncAnimation的首选方法?我用它来记录示波器的数据,并希望能够按需暂停和重启数据。有什么方法可以发送按钮点击事件吗?

谢谢,德里克

2 个答案:

答案 0 :(得分:6)

FuncAnimationTimedAnimation的子类。它将帧作为更新函数的输入,可以是数字或生成器。它需要repeat作为参数,继承自TimedAnimation,通过将reapeat设置为False,您可以停止动画重复播放。

PS:Matplotlib文档是蹩脚,错误,懒惰的写作风格,解释不清楚。有时候,我真的需要深入了解源代码以找出要做的事情。

FuncAnimation类似,它还需要fargs作为update函数的额外参数,但在其文档中,它并未说明fargs的类型。事实上,我在源代码中找到了fargs is used as a list

答案 1 :(得分:2)

可能有一些模块,但我定义了自己的暂停功能。它通过点击图上的某个位置冻结动画。再次单击时,它将继续绘制动画。

您必须在动画开始前定义一个标志。在动画功能(绘制动画期间将调用的功能)中,您必须定义一个控制块,如:if not pause:,然后编写代码以绘制下面的函数。

您可能已经检查过,但this page举例说明了我的意思。我想,很多人都是这样做的。

请注意,暂停开关使用以下功能完成:

def onClick(event):
    global pause
    pause ^= True

在调用FuncAnimation

之前,你必须在某个地方进一步添加这一行
fig.canvas.mpl_connect('button_press_event', onClick)