matplotlib.animation.FuncAnimation#

matplotlib.animation.FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)[source]#

TimedAnimation 子类,通过重复调用函数 func 来创建动画。

注意

您必须将创建的 Animation 对象存储在一个变量中,该变量的生命周期应与动画运行时间一样长。否则,Animation 对象将被垃圾回收,动画将停止。

参数:
figFigure

用于获取所需事件(如绘制或调整大小)的图形对象。

func可调用

每一帧调用的函数。第一个参数将是 frames 中的下一个值。任何额外的 Positional arguments can be supplied using functools.partial or via the fargs parameter。

所需签名是

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 == Truefunc 必须返回所有被修改或创建的 artist 的可迭代对象。此信息用于 blitting 算法来确定图形的哪些部分需要更新。如果 blit == False,则返回值未使用,在这种情况下可以省略。

frames可迭代对象,整型,生成器函数,或无,可选

用于向 func 和动画的每一帧传递数据的数据源

  • 如果是一个可迭代对象,则直接使用提供的值。如果可迭代对象有长度,它将覆盖 save_count kwarg。

  • 如果是一个整型,则相当于传递 range(frames)

  • 如果是一个生成器函数,则必须具有以下签名

    def gen_function() -> obj
    
  • 如果为 None,则相当于传递 itertools.count

在所有这些情况下,frames 中的值都只是传递给用户提供的 func,因此可以是任何类型。

init_func可调用,可选

用于绘制清晰帧的函数。如果未提供,则将使用从 frames 序列中第一个项绘制的结果。此函数将在第一帧之前调用一次。

所需签名是

def init_func() -> iterable_of_artists

如果 blit == Trueinit_func 必须返回要重新绘制的 artist 的可迭代对象。此信息用于 blitting 算法来确定图形的哪些部分需要更新。如果 blit == False,则返回值未使用,在这种情况下可以省略。

fargs元组或无,可选

传递给 func 的每次调用的附加参数。注意:建议使用 functools.partial 而不是 fargs。详情请参见 func

save_count整型,可选

frames 中要缓存的值数量的备用值。这仅在无法从 frames 推断帧数时使用,即当它是一个没有长度的迭代器或生成器时。

interval整数,默认值:200

帧之间的延迟(毫秒)。

repeat_delay整数,默认值:0

如果 repeat 为 True,则连续动画运行之间的延迟(毫秒)。

repeat布尔值,默认值:True

当帧序列完成后,动画是否重复。

blit布尔值,默认值:False

是否使用 blitting 优化绘图。注意:当使用 blitting 时,任何动画 artist 将根据其 zorder 绘制;但是,它们将绘制在任何之前的 artist 之上,无论其 zorder 如何。

cache_frame_data布尔值,默认为 True

是否缓存帧数据。当帧包含大型对象时,禁用缓存可能会有所帮助。

__init__(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)[source]#

方法

__init__(fig, func[, frames, init_func, ...])

new_frame_seq()

返回一个新的帧信息序列。

new_saved_frame_seq()

返回一个新的已保存/缓存的帧信息序列。

pause()

暂停动画。

resume()

恢复动画。

save(filename[, writer, fps, dpi, codec, ...])

通过绘制每一帧将动画保存为视频文件。

to_html5_video([embed_limit])

将动画转换为 HTML5 <video> 标签。

to_jshtml([fps, embed_frames, default_mode])

生成动画的 HTML 表示。

new_frame_seq()[source]#

返回一个新的帧信息序列。

new_saved_frame_seq()[source]#

返回一个新的已保存/缓存的帧信息序列。