使用matplotlib的Python动画
我已经浏览文档、示例等问题好几个小时了,但仍然无法理解这一点。 我有以下python函数:使用matplotlib的Python动画,python,animation,matplotlib,Python,Animation,Matplotlib,我已经浏览文档、示例等问题好几个小时了,但仍然无法理解这一点。 我有以下python函数: def getPlotData(index) 返回4个列表: tPlots, yPlots, colorPlots, alphaPlots 每个列表中的每个元素都包含 一组t值(或独立值) 一组y值(从属值) 颜色(例如,“#00FF00”) 阿尔法(例如.5) 这样我就可以制作单独的图像打印: N = 100 #the details of how i have this number aren
def getPlotData(index)
返回4个列表:
tPlots, yPlots, colorPlots, alphaPlots
每个列表中的每个元素都包含
- 一组t值(或独立值)
- 一组y值(从属值)
- 颜色(例如,
)“#00FF00”
- 阿尔法(例如
).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)
应用到这个用例中,即使是从下面的方法
有什么想法吗?
多谢各位
编辑:我只是想说清楚,我的目的是将电影保存为mp4或任何其他文件格式。我不打算稍后运行python脚本,只运行电影文件。谢谢。如果您真的只想将内容保存到电影中,并且想坚持使用
matplotlib
,无论它的计算性能有多差:
fig=pyplot.figure(figsize=(w,h),dpi=100)
左右李>
fig.savefig(“{framenumber:06d}.png.”格式(framenumber=counter))
mencoder
转换为电影:
mencoder -o output.mp4 -ovc mpeg4 *.png
我本想将此作为一个答案发布,但我认为它不足以解决您的问题:不要将matplotlib用于动画。它的性能很差,不能很好地处理更新。我强烈建议大家看看PyQWT和PyQtGraph.org,它更适合这样的东西,速度更快,使用起来也不难。对于QWT,您甚至可以使用QtCreator IDE构建交互式应用程序,并将GUI导出为python或python可加载UI描述文件.Hmm。我目前已经在应用程序中使用Qt。我会记住那个想法。谢谢你的提示。记住,它不需要很快。我只想将它保存为视频(文件格式不重要)。看看GNU Radio的可视化效果——如果你想随着时间的推移可视化的是一个浮点或复杂的东西,那么它们可能已经有你想要的了,GNU Radio附带了一个很棒的图形工具包,可以生成信号分析流程图。我来试一试,然后再给你们回复。