matplotlib.animation.Animation#
- class matplotlib.animation.Animation(fig, event_source=None, blit=False)[source]#
动画的基础类。
此类别无法直接使用,应通过子类化来提供所需行为。
注意
您必须将创建的 Animation 对象存储在一个变量中,该变量的生命周期应与动画运行时间一样长。否则,Animation 对象将被垃圾回收,动画将停止。
- 参数:
- fig
Figure
用于获取所需事件(如绘制或调整大小)的图形对象。
- event_source对象,可选
一个可以在生成所需事件时运行回调,并且可以停止和启动的类。
示例包括计时器(参见
TimedAnimation
)和文件系统通知。- blit布尔值,默认值:False
是否使用 Blitting 来优化绘图。如果后端不支持 Blitting,则此参数无效。
- fig
另请参阅
方法
__init__
(fig[, event_source, blit])返回一个新的帧信息序列。
返回一个新的已保存/缓存的帧信息序列。
pause
()暂停动画。
resume
()恢复动画。
save
(filename[, writer, fps, dpi, codec, ...])通过绘制每一帧将动画保存为视频文件。
to_html5_video
([embed_limit])将动画转换为 HTML5
<video>
标签。to_jshtml
([fps, embed_frames, default_mode])生成动画的 HTML 表示。
- save(filename, writer=None, fps=None, dpi=None, codec=None, bitrate=None, extra_args=None, metadata=None, extra_anim=None, savefig_kwargs=None, *, progress_callback=None)[source]#
通过绘制每一帧将动画保存为视频文件。
- 参数:
- filename字符串
输出文件名,例如
mymovie.mp4
。- writer
MovieWriter
或 字符串, 默认值:rcParams["animation.writer"]
(默认值:'ffmpeg'
) 要使用的
MovieWriter
实例,或标识要使用的类的键,例如 'ffmpeg'。- fpsint,可选
电影帧率(每秒)。如果未设置,则使用动画的帧间隔的帧率。
- dpi浮点数,默认值:
rcParams["savefig.dpi"]
(默认值:'figure'
) 控制电影帧的每英寸点数。与图形的英寸大小一起,这控制了电影的大小。
- codec字符串,默认值:
rcParams["animation.codec"]
(默认值:'h264'
)。 要使用的视频编解码器。并非所有编解码器都受给定
MovieWriter
支持。- bitrateint,默认值:
rcParams["animation.bitrate"]
(默认值:-1
) 电影的比特率,单位为千比特每秒。值越高意味着电影质量越高,但会增加文件大小。值为 -1 表示底层电影编码器将选择比特率。
- extra_args字符串列表或 None,可选
传递给底层电影编码器的额外命令行参数。这些参数将在输出文件名之前,最后传递给编码器。默认值 None 表示对内置写入器使用
rcParams["animation.[name-of-encoder]_args"]
。- metadatadict[字符串, 字符串],默认值: {}
用于在输出文件中包含元数据的键值字典。可能有用的一些键包括:title(标题)、artist(艺术家)、genre(流派)、subject(主题)、copyright(版权)、srcform(源格式)、comment(评论)。
- extra_anim列表,默认值: []
应包含在保存的电影文件中的额外
Animation
对象。这些对象必须来自同一个Figure
实例。此外,动画帧将简单地合并,因此不同动画的帧之间应存在一对一的对应关系。- savefig_kwargsdict,默认值: {}
传递给每次
savefig
调用以保存单个帧的关键字参数。- progress_callback函数,可选
一个回调函数,每帧都会调用它以通知保存进度。它必须具有以下签名:
def func(current_frame: int, total_frames: int) -> Any
其中 current_frame 是当前帧号,total_frames 是要保存的总帧数。如果无法确定总帧数,则 total_frames 将设置为 None。返回值可能存在,但会被忽略。
将进度写入标准输出的示例代码
progress_callback = lambda i, n: print(f'Saving frame {i}/{n}')
备注
fps、codec、bitrate、extra_args 和 metadata 用于构建一个
MovieWriter
实例,并且只有当 writer 是字符串时才能传递。如果它们作为非 None 传递而 writer 是一个MovieWriter
实例,则会引发RuntimeError
。
- to_html5_video(embed_limit=None)[source]#
将动画转换为 HTML5
<video>
标签。这会将动画保存为 h264 视频,直接以 base64 编码嵌入到 HTML5 视频标签中。这会遵守
rcParams["animation.writer"]
(默认值:'ffmpeg'
) 和rcParams["animation.bitrate"]
(默认值:-1
)。它还会利用 interval 来控制速度,并使用 repeat 参数来决定是否循环播放。- 参数:
- embed_limit浮点数,可选
返回动画的大小限制,单位为 MB。如果超出限制,则不会创建动画。默认为
rcParams["animation.embed_limit"]
(默认值:20.0
) = 20.0。
- 返回:
- 字符串
一个 HTML5 视频标签,其中动画以 base64 编码的 h264 视频形式嵌入。如果超出 embed_limit,则返回字符串“Video too large to embed.”
- to_jshtml(fps=None, embed_frames=True, default_mode=None)[source]#
生成动画的 HTML 表示。
- 参数:
- fpsint,可选
电影帧率(每秒)。如果未设置,则使用动画的帧间隔的帧率。
- embed_frames布尔值,可选
- default_mode字符串,可选
动画结束时的行为。必须是
{'loop', 'once', 'reflect'}
之一。如果 repeat 参数为 True,则默认为'loop'
,否则为'once'
。
- 返回:
- 字符串
动画的 HTML 表示,以 js 对象形式嵌入,由
HTMLWriter
生成。