时间:2020-11-23 17:02作者:admin来源:未知人气:457我要评论(0)
Matplotlib是非常著名的Python绘图库,支持非常复杂的底层定制化操作。本文通过Matplotlib中的动画绘制工具来讲解如何绘制动态图,首先讲解通过交互模式如何显示动态图,继而讲解通过两个动画类来实现动图地保存(GIF格式)。
首先,需要明确,Matplotlib绘图有两种显示模式,分别为阻塞模式和交互模式,他们具体的说明如下。
plt.show()
进行展示(默认会弹出一个窗口),代码会运行到该行阻塞不继续执行,直到关闭这个展示(默认是关闭弹出的显示窗口,Pycharm等集成开发环境会自动捕获图片然后跳过阻塞)。plt.plot()
会立即显示绘制的图形然后迅速关闭,继续代码的运行,不发生阻塞。默认情况下,Matplotlib使用阻塞模式,要想打开交互模式需要通过下面的几个函数来做操作,下面直接列出要用的核心函数。
然后就是要清楚,所谓的动图或者视频是怎么做到的,其实它们本质上就是很多静态图以较快的速度连续播放从而给人一种动感,利用Matplotlib绘制动图的原理也是一样的,遵循画布绘图
->清理画布
->画布绘图
的循环就行了,不过这里注意,由于交互模式下绘图都是一闪而过,因此通过plt.pause(n)
暂停GUI显示n秒才能得到连续有显示的图像。
上述代码演示了三维空间如何动态显示100个随机点的变化,使用录制软件得到的动图如下,其本质就是不停显示不同的图像而已。
很多时候我们的需求并不是在窗口中动态显示图像,还需要保存到本地GIF图像,显然使用录制工具是一个比较低效的用法,Matplotlib的animation
模块提供了两个动画绘制接口,分别是FuncAnimation和ArtistAnimation,它们都是继承自TimedAnimation
的类,因而也具有Animation
对象的通用方法,如Animation.save()
和Animation.to_html5_video()
两个方法实例化一个Animation
对象后均可调用,前者表示将动画保存为一个图像,后者表示将动画表示为一个HTML视频。
下面给出上述两个类的构造函数所需参数,它们的主要参数也是类似的,都是一个Figure对象作为画布,然后一个对象作为更新的实现方式(前者需要一个反复绘图的更新函数,后者则为一个图像列表或者绘图对象列表)。
相比较而言,我更喜欢使用FuncAnimation
,它的使用要求简洁且定制化程度较高。但是如果想将很多图片合并为一个动图,那么ArtistAnimation
是最合适的选择。
下面的代码演示了如何保存一个动态变化渲染的柱状图,ArtistAnimation
传入了一个图像序列,序列中每个元素为绘制的柱状图。然后通过使用Animation
的save
方法保存了动态图,**需要注意的是,这里有个动画写入器(writer)可以选择,默认不是pillow,我个人觉得pillow安装简单一些。
上面代码的执行结果如下图。
接着,演示使用范围更广的FuncAnimation
如何使用。下面的代码中,动态展示了梯度下降在三维图上的优化过程,其中最为核心的代码如下。用于构造Animation
对象的除了画布就是一个更新函数,在这个更新函数内部多次绘制散点图从而形成动态效果, frames
是帧数,如果设置了这个帧数,那么update
函数第一个参数必须有一个num
占位,这个num
由Animation
对象维护,每次内部执行update
会自动递增,后面的参数列表fargs
只需要传入除了num
后面的参数即可。
上面的代码演示效果如下图,完整的代码附在文末补充说明中。
本文介绍了如何使用Matplotlib绘制动态图,主要通过交互模式和animation
模块进行,如果觉得有所帮助,欢迎点赞。
相关阅读 如何使用Origin Pro利用公式直接绘图并提取曲线数据如何利用Origin Pro进行体外释药规律的拟合SPSS实现经典统计学分析与偏度、峰度等常用统计学指标的计算EndNote英文论文的国内作者姓名显示名的第二个字首写字母的方法EndNote论文参考文献中文文章与英文文章先后排列顺序的修改EndNote论文参考文献的输出引用格式自定义修改与编辑界面详解如何使用Endnote在论文中插入图片Origin Pro如何快速绘制火山图教程Origin Pro中必须知道的快捷键Origin高效绘图技能,OLE功能详解,让你效率直接翻倍
热门文章 如何解决EndNotes在word不显示的问题EndNote如何在WPS中使用,EndNote如何在WPS中插入和删除文献如何用GraphPad Prism 进行显著性分析Origin 如何在曲线图上添加各种标注的方法
最新文章
如何使用Origin Pro利用公式直接绘图并提取曲线数据如何利用Origin Pro进行体外释药规律的拟合
SPSS实现经典统计学分析与偏度、峰度等常用统计学指标的计算EndNote英文论文的国内作者姓名显示名的第二个字首写字母的方法EndNote论文参考文献中文文章与英文文章先后排列顺序的修改EndNote论文参考文献的输出引用格式自定义修改与编辑界面详解
人气排行 如何解决EndNotes在word不显示的问题EndNote如何在WPS中使用,EndNote如何在WPS中插入和删除文献如何用GraphPad Prism 进行显著性分析Origin 如何在曲线图上添加各种标注的方法如何利用Origin进行多元线性回归、指数拟合和非线性曲面拟合?Endnote 如何导出GB/T 7714-2015 格式参考文献如何去掉EndNote插入Word的参考文献的超链接EndNote的同步功能Sync使用详解教程
盖楼回复X
(您的评论需要经过审核才能显示)
查看所有0条评论>>