使用 matplotlib 的 Python 动画

标签 python animation matplotlib

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

def getPlotData(index)

返回 4 个列表:

tPlots, yPlots, colorPlots, alphaPlots

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

  • 一组 t 值(或独立值)
  • 一组 y 值(相关值)
  • 颜色(例如'#00FF00')
  • alpha(例如.5)

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

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 让我感到非常困惑。有很多选项可供选择,但似乎没有一个是简单的。这些方式似乎都不像我的函数生成框架的方式那样固有地组织。我现在已经重构了 getPlotData(index) 3 次,尝试获取某些 matplotlib 方法可用的函数,但没有成功,尽管当前第三次重构的形式是最可用(最模块化)。

最简单的方法似乎是我可以创建一个框架列表,但我尚未成功地将上述 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

关于使用 matplotlib 的 Python 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107997/

相关文章:

python - matplotlib 的 xkcd() 不工作

python - 在Python中写入文件

python - 如何向 Kivy For Android 添加模块?

python - 如何将 Maya 节点层次结构存储到 Python 字典中

objective-c - 制作线条动画的最简单方法是什么?

python - 在 jupyter 笔记本中同时使用 matplotlib inline 和 qt

python - 从文件中读取一组元组编号

javascript - 上层元素通过时如何保持底层元素悬停

javascript - 动画不透明度在 IE 上无法正常工作

python - matplotlib,Python : part of title in bold font