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免费学习笔记(深入)”;
实际应用中常需同时更新曲线、散点、标题、标注等。关键原则是:所有要动的元素都应在 update() 中显式设置,并在 return 中一并返回。
scatter.set_offsets(np.c_[x, y])
text.set_text(f'Frame: {frame}') 或 set_position((x, y))
line1.set_data(...)、line2.set_data(...)
update 中调用 plt.title() 等高层接口,改用 ax.set_title()
动画对象 ani 提供 save() 方法,但需提前安装对应写入器:
pillow(pip install pillow),然后 ani.save('wave.gif', writer='pillow')
ffmpeg,设置 writer='ffmpeg',并指定 fps
dpi 参数保证清晰度,例如 dpi=150
不复杂但容易忽略:动画不是“自动播放的视频”,而是基于 matplotlib 的重绘机制;理解 init、update、blit 三者关系,就能稳稳掌控每一帧。
以上就是Python动态图表绘制方法_animation模块应用解析【教学】的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号