Python 使用 matplotlib 制作动画
Python animation using matplotlib
我已经浏览文档、示例和 SO 问题几个小时了,但仍然无法弄清楚。
我有以下 python 功能:
def getPlotData(index)
其中 returns 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 对于 animations/movies 让我很困惑。有很多选项可供选择,none 看起来很简单。 None 的方式似乎天生就按照我的函数生成框架的方式进行组织。我已经重构了 getPlotData(index)
3 次,试图让一些 matplotlib
方法可以使用函数,但没有成功,尽管目前第 3 次重构的形式是最有用的(最模块化的)。
最简单的方法似乎是我可以创建一个 list
帧,但我还没有成功地将上述 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
我已经浏览文档、示例和 SO 问题几个小时了,但仍然无法弄清楚。 我有以下 python 功能:
def getPlotData(index)
其中 returns 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 对于 animations/movies 让我很困惑。有很多选项可供选择,none 看起来很简单。 None 的方式似乎天生就按照我的函数生成框架的方式进行组织。我已经重构了 getPlotData(index)
3 次,试图让一些 matplotlib
方法可以使用函数,但没有成功,尽管目前第 3 次重构的形式是最有用的(最模块化的)。
最简单的方法似乎是我可以创建一个 list
帧,但我还没有成功地将上述 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