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 == Truefunc 必须返回所有被修改或创建的艺术家的可迭代对象。此信息用于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 == Trueinit_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, ...])

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()[源代码][源代码]#

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

new_saved_frame_seq()[源代码][源代码]#

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