Python 使用 matplotlib 制作动画

Python animation using matplotlib

我已经浏览文档、示例和 SO 问题几个小时了,但仍然无法弄清楚。 我有以下 python 功能:

def getPlotData(index)

其中 returns 4 个列表:

tPlots, yPlots, colorPlots, alphaPlots

每个列表中的每个元素包含

这样我就可以制作单独的图像图:

N = 100 #the details of how i have this number aren't important.
for frame in range(N):
    tPlots, yPlots, colorPlots, alphaPlots = getPlotData(frame)
    for i in range(len(tPlots)):
        plt.figure()
        plt.plot(tPlots[i],yPlots[i],color=colorPlots[i], alpha = alphaPlots[i])

plt.show()

但这当然会生成静态图形,每帧一个。我想从这些帧生成电影,但是 matplotlib 的 API 对于 animations/movies 让我很困惑。有很多选项可供选择,none 看起来很简单。 None 的方式似乎天生就按照我的函数生成框架的方式进行组织。我已经重构了 getPlotData(index) 3 次,试图让一些 matplotlib 方法可以使用函数,但没有成功,尽管目前第 3 次重构的形式是最有用的(最模块化的)。

最简单的方法似乎是我可以创建一个 list 帧,但我还没有成功地将上述 getPlotData(index) 应用到这个用例,即使遵循 this example.

有什么想法吗? 谢谢。

编辑:我只想说清楚,我的目的是将电影保存为 mp4 或任何其他文件格式。我不打算稍后 运行 python 脚本,只是电影文件。谢谢。

如果你真的只是想把东西保存到电影里,并且想坚持matplotlib,不管它的计算性能有多差:

  1. 设置你的身材:fig = pyplot.figure(figsize=(w,h), dpi=100)左右;
  2. 画画
  3. fig.savefig("{framenumber:06d}.png".format(framenumber=counter))
  4. 冲洗,重复

以后使用例如mencoder 转换成电影:

mencoder -o output.mp4 -ovc mpeg4 *.png