使用matplotlib绘制动画的步骤
本文采用moviewriter来绘制,避免采用matplotlib.animition的动画绘制方法,将动画简化为图片一帧一帧播放。
使用总共三步,如下代码所示。
补充说明: 在具体使用代码的时候,有时候会出现 subprocess的Error, 这是因为没有指定 ffmpeg_bin的路径,因而,需要特别注意 以下两句:
ffmpegpath = os.path.abspath("C:/Program Files (x86)/ffmpeg/bin/ffmpeg.exe")
matplotlib.rcParams["animation.ffmpeg_path"] = ffmpegpath
print('ffmpegpath:', FFMpegWriter.bin_path())
关于 matplotlib.animation.FFMpegWriter的介绍的官方文档:
https://www.osgeo.cn/matplotlib/api/_as_gen/matplotlib.animation.FFMpegWriter.html
import numpy as np
import matplotlib, os
matplotlib.use("Agg")
import matplotlib.pyplot as plt
ffmpegpath = os.path.abspath("C:/Program Files (x86)/ffmpeg/bin/ffmpeg.exe")
matplotlib.rcParams["animation.ffmpeg_path"] = ffmpegpath
from matplotlib.animation import FFMpegWriter
#一, 初始化信息
metadata = dict(title='Movie Test', artist='Matplotlib',
comment='Movie support!')
writer = FFMpegWriter(fps=15, metadata=metadata)
# 数据准备
fig = plt.figure()
x0, y0 = np.linspace(0, np.pi, 100), np.sin(np.linspace(0, np.pi, 100))
# 二, 类似打开文件一样打开一个视频,500代表精度
with writer.saving(fig, "writer_test.mp4", 500):
for i in range(100):
plt.cla() # 注意,清除之前的内容
plt.xlim(-np.pi, np.pi)
plt.ylim(-1.5, 1.5)
x, y = x0[0:i], y0[0:i]
plt.plot(x, y, c= 'r')
#三,抓取当前的帧
writer.grab_frame()
效果参考:https://www.bilibili.com/video/av66377656
本文介绍如何使用matplotlib的moviewriter绘制动画,通过逐帧播放图片实现动画效果。文章详细展示了代码实现过程,包括初始化信息、数据准备、打开视频并设置精度、循环绘制及抓取当前帧,最终生成mp4格式的动画视频。
153

被折叠的 条评论
为什么被折叠?



