matplotlib.animation.FuncAnimation#
- class matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)[源代码][源代码]#
TimedAnimation
子类,通过重复调用一个函数 func 来制作动画。备注
你必须将创建的动画存储在一个变量中,该变量在动画运行期间一直存在。否则,动画对象将被垃圾回收,动画将停止。
- 参数:
- fig图
用于获取所需事件的图形对象,例如绘制或调整大小。
- 函数可调用
在每一帧调用的函数。第一个参数将是 frames 中的下一个值。任何额外的位置参数可以通过
functools.partial
或通过 fargs 参数提供。所需的签名是:
def func(frame, *fargs) -> iterable_of_artists
使用
functools.partial
提供参数通常更为方便。这样也可以传递关键字参数。要传递一个同时包含位置参数和关键字参数的函数,将所有参数设置为关键字参数,只需不设置 frame 参数:def func(frame, art, *, y=None): ... ani = FuncAnimation(fig, partial(func, art=ln, y='foo'))
如果
blit == True
,func 必须返回所有被修改或创建的艺术家的可迭代对象。此信息用于blitting算法,以确定图形的哪些部分需要更新。如果blit == False
,则返回值未使用,在这种情况下可能被省略。- 框架可迭代对象、整数、生成器函数或 None,可选
传递给 func 和动画每一帧的数据源
如果是可迭代对象,则直接使用提供的值。如果可迭代对象有长度,它将覆盖 save_count 关键字参数。
如果是整数,则等效于传递
range(frames)
如果是一个生成器函数,那么必须具有以下签名:
def gen_function() -> obj
如果为 None ,则等同于传递
itertools.count
。
在所有这些情况下,frames 中的值只是简单地传递给用户提供的 func,因此可以是任何类型。
- init_func可调用对象,可选
用于绘制清晰框架的函数。如果未提供,将使用从框架序列中第一个项目绘制的结果。此函数将在第一帧之前被调用一次。
所需的签名是:
def init_func() -> iterable_of_artists
如果
blit == True
,init_func 必须返回一个可迭代的艺术家以重新绘制。此信息用于blitting算法,以确定图形的哪些部分需要更新。如果blit == False
,则返回值未使用,在这种情况下可以省略。- fargs元组或 None,可选
传递给每次调用 func 的额外参数。注意:优先使用
functools.partial
而不是 fargs。详情请参见 func。- save_countint, 可选
从 frames 缓存值数量的回退。仅在无法从 frames 推断帧数时使用,即当它是一个没有长度的迭代器或生成器时。
- 间隔int, 默认值: 200
帧之间的延迟时间,单位为毫秒。
- 重复延迟int, 默认值: 0
如果 repeat 为 True,连续动画运行之间的延迟(以毫秒为单位)。
- 重复bool, 默认值: True
动画在完成帧序列后是否重复。
- blitbool, 默认值: False
是否使用blitting来优化绘图。注意:当使用blitting时,任何动画艺术家将根据其zorder绘制;然而,它们将绘制在任何先前的艺术家之上,无论其zorder如何。
- cache_frame_databool, 默认值: True
是否缓存帧数据。当帧包含大型对象时,禁用缓存可能会有所帮助。
- __init__(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)[源代码][源代码]#
方法
__init__
(fig, func[, frames, init_func, ...])返回一个新的帧信息序列。
返回一个新的保存/缓存的帧信息序列。
pause
()暂停动画。
resume
()恢复动画。
save
(filename[, writer, fps, dpi, codec, ...])通过绘制每一帧将动画保存为电影文件。
to_html5_video
([embed_limit])将动画转换为 HTML5
<video>
标签。to_jshtml
([fps, embed_frames, default_mode])生成动画的 HTML 表示。