我已经浏览文档、示例和 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
,无论它的计算性能有多糟糕:
- 设置您的图形:
fig = pyplot.figure(figsize=(w,h), dpi=100)
左右; - 画画
fig.savefig("{framenumber:06d}.png".format(framenumber=counter))
- 冲洗,重复
然后使用例如mencoder
转换为电影:
mencoder -o output.mp4 -ovc mpeg4 *.png
关于使用 matplotlib 的 Python 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107997/