我有兴趣使用matplotlib制作电影。我到目前为止看到的示例,例如this one for moviewriter,似乎让您为每个帧就地编辑数据。这非常有效,避免重新绘制每次保持相同的图像部分。但是,快速数据探索可能很笨拙。我想要一个配方,让我简单地将完全绘制的图形作为每个帧(每次清除相同的图形对象都很好)。
原因是:我经常使用自定义函数创建中等复杂的数字,形式为plotme(ax, data, **options)
。我经常在没有动画的情况下开发这些函数,后来想通过在循环中调用绘图函数来设置图形的动画。我不想在每个帧的图中将函数的逻辑更改为现有艺术家的“setData”。
答案 0 :(得分:2)
虽然您显示的示例代码更新了现有的绘图对象,但您没有必要这样做。附加代码的关键部分是writer.grab_frame()
,它只是获取当前数字的屏幕截图。
以下是不使用现有绘图对象的示例
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as manimation
FFMpegWriter = manimation.writers['ffmpeg']
metadata = dict(title='Movie Test', artist='Matplotlib',
comment='Movie support!')
writer = FFMpegWriter(fps=15, metadata=metadata)
fig = plt.figure()
with writer.saving(fig, "writer_test.mp4", 100):
for k in range(10):
# Create a new plot object
plt.plot(range(k), range(k), 'o')
writer.grab_frame()