当前有效matplotlib版本为:3.4.1。
概述
逐帧动画(Frame By Frame)是一种常见的动画形式,通过将不同的静止图像以一定时间间隔连续播放,因人类视觉暂停现象而获得动画的效果。
FuncAnimation是matplotlib生成逐帧动画的常用类,它的工作原理就是按照一定时间间隔不断调用参数func对应的函数生成动画。
FuncAnimation的继承关系如下:
matplotlib.animation.Animation→matplotlib.animation.TimedAnimation→matplotlib.animation.FuncAnimation
FuncAnimation类的签名为:class matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)
构造函数参数如下:
fig:承载动画的图形对象。matplotlib.figure.Figure对象。必备参数。func: 每一帧都需要调用的函数。可调用对象。必备参数。
func的签名如下为def func(frame, *fargs) -> iterable_of_artists。第一个参数为frames参数传递过来的一个元素,剩余位置参数由fargs参数提供。
如果blit == True,func必须返回一个包含所有已创建或修改的可视化对象(artist)的可迭代对象。如果blit == False,返回值将被忽略。frames:用于向func生成的每一帧传递一个值。可迭代对象,整数,生成器或None,可选参数。- 如果值为可迭代对象,直接使用可迭代对象。如果可迭代对象长度固定,将会覆盖
save_count参数。 - 如果值为整数,相当于传递
range(frames)。 - 如果值为生成器,生成器的签名要求为
def gen_function() -> obj。 - 如果值为
None,相当于传递itertools.count。
- 如果值为可迭代对象,直接使用可迭代对象。如果可迭代对象长度固定,将会覆盖
init_func: 用于初始化帧的函数,在生成第1帧之前,会调用一次该函数。可调用对象。可选参数。如果不提供改参数, 将使用frames参数中的第一个元素的绘制结果。该参数的签名要求为def init_func() -> iterable_of_artists,除了参数,其余要求与func参数类似。fargs: 传递给func的附加参数。元组或None。可选参数。save_count: 用于缓存frames值的数量,该参数只用于frames值数量不能推断出的情况。整数。默认值为100interval:帧之间的间隔毫秒数。整数。默认值为200。repeat_delay:当repeat为True时生效。即动画重复执行的间隔毫秒数。当整数。默认值为0。repeat:当帧序列执行一次之后是否重复执行。布尔值。默认值为True。blit: 是否采用按叠放次序(zorder)优化绘图模式。布尔值。默认值为False。cache_frame_data:每帧数据是否被缓存。布尔值。默认值为True。
FuncAnimation类继承了matplotlib.animation.Animation类的pause

本文介绍matplotlib库中FuncAnimation类的基本用法,包括构造函数参数详解及两个实例:动态绘制sin曲线与通过鼠标操作控制动画播放。
最低0.47元/天 解锁文章
1万+





