Python库matplotlib之九
- 动画
- ArtistAnimation
- 构造器
- 成员函数
- 应用例子
动画
Matplotlib基于其绘图功能,还提供了一个使用动画模块,生成动画的接口。动画是一系列帧,其中每个帧对应于图形上的一个图。
Matplotlib使用两个类来实现动画, 它们分别是
- FuncAnimation:生成第一帧的数据,然后修改每一帧的数据以创建动画图。这个类在速度和内存方面更加高效,因为它绘制一次artist,然后对其进行修改
- ArtistAnimation:生成将在动画中的每个帧中进行绘制的artist列表(可迭代)。这个类很灵活,因为它允许任何可迭代的artist按序列进行动画处理。
ArtistAnimation
构造器
词法·:matplotlib.animation.ArtistAnimation(fig, artists, *args, **kwargs)
ArtistAnimation是TimedAnimation的子类,它使用一组固定的Artist对象创建动画。在创建实例之前,所有绘图都应已完成,并保存相关Artist。
参数说明
-
fig,该参数类型是Figure
fig是Figure对象,用于获取所需事件,例如绘制或调整大小。 -
artists,该参数类型是list
artists是一个list,list的每个条目都是Artist对象的集合,它将在相应帧上可见 。其他Artist则被隐形。 -
interval,该参数类型是int, 默认值为200
帧之间的以毫秒为单位延迟。 -
repeat_delay,该参数类型是int, 默认值为0
如果参数repeat为True,则它是连续动画运行之间的以毫秒为单位延迟。 -
repeat,该参数类型是bool, 默认值为True
该参数确定,当帧序列完成时,动画是否重复。若为真,则重复;否则,不重复。 -
blit,该参数类型是bool, 默认值为False
blit确定是否使用位块传输来优化绘图。
成员函数
成员函数 | 说明 |
---|---|
init(fig, artists, *args, **kwargs) | |
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 表示形式。 |
应用例子
该应用例子使用一个for循环,产生20个artists。ArtistAnimation使用该20个artists产生动画。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def f(x, y):
return np.sin(x) + np.cos(y)
x = np.linspace(0, 2 * np.pi, 12)
y = np.linspace(0, 2 * np.pi, 10).reshape(-1, 1)
if __name__ == "__main__":
fig = plt.figure()
ims = []
for i in range(20):
x += np.pi / 15.
y += np.pi / 20.
im = plt.imshow(f(x, y), animated=True)
ims.append([im])
ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True,
repeat_delay=100)
plt.show()