Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用matplotlib的Python动画_Python_Animation_Matplotlib - Fatal编程技术网

使用matplotlib的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

我已经浏览文档、示例等问题好几个小时了,但仍然无法理解这一点。 我有以下python函数:

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附带了一个很棒的图形工具包,可以生成信号分析流程图。我来试一试,然后再给你们回复。