matplotlib.animation.FuncAnimation是最常用可控的Python动态图表方案,通过init初始化、update逐帧更新数据、blit优化重绘实现正弦波等动画,支持GIF/MP4导出。

用 Python 做动态图表,matplotlib.animation 是最常用、最可控的方案之一。它不依赖外部库,能深度控制每一帧,适合教学演示、算法过程可视化、时间序列演化等场景。
核心思路:按帧生成 + 动画封装
动画本质是快速连续播放静态图帧。FuncAnimation 是最常用的类,它通过反复调用一个更新函数(func),在每帧中修改图形对象(如线条数据、散点位置、文本内容等),再重绘画面。
- 必须有一个“画布”——通常用
plt.figure()和ax = fig.add_subplot()创建 - 必须预先绘制初始图像(哪怕只是空图),否则后续无法更新
- 更新函数接收帧号(如
i)作为参数,据此计算当前帧应显示的数据 -
interval控制帧间隔(毫秒),frames指定总帧数或可迭代对象
基础示例:正弦波逐步展开
这是入门必练案例,直观体现“逐帧追加”的逻辑:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig, ax = plt.subplots()
x_data, y_data = [], []
line, = ax.plot([], [], 'r-')
def init():
ax.set_xlim(0, 4*np.pi)
ax.set_ylim(-1.2, 1.2)
return line,
def update(frame):
x_data.append(frame)
y_data.append(np.sin(frame))
line.set_data(x_data, y_data)
return line,
ani = FuncAnimation(fig, update, frames=np.linspace(0, 4*np.pi, 200),
init_func=init, blit=True, interval=50)
plt.show()
登录后复制
注意:blit=True 只重绘变化部分,大幅提升性能;init_func 负责设置初始视图和返回需动画化的 artist 对象。
立即学习“Python免费学习笔记(深入)”;
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~