最近偶然看到一则科技新闻,说是科学家发现了第六种味道「肥」,立即在Google上搜索了一翻,但是多数新闻是中文新闻,而且最可能的原始出处是新华网。 新华网大致的意思是目前为科学界......
2020-09-21 220 EndNote,EndNote导入文献,EndNote插入文献
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
模块进行,如果觉得有所帮助,欢迎点赞。
相关文章
最近偶然看到一则科技新闻,说是科学家发现了第六种味道「肥」,立即在Google上搜索了一翻,但是多数新闻是中文新闻,而且最可能的原始出处是新华网。 新华网大致的意思是目前为科学界......
2020-09-21 220 EndNote,EndNote导入文献,EndNote插入文献
SciencePlots科研绘图 简介 使用Python作为核心开发工具的机器学习和深度学习研究者自然会希望使用Matplotlib进行科研图表的绘制,但是Matplotlib默认的样式并不适合科研论文的出版,而SciencePlots就......
2020-11-23 202 SciencePlots,科研绘图
EndNote对于英文文献的处理很出色,但是对于中文文献的处理就有点别扭,尤其是中英文文献混排时更是不爽。木有关系,EndNote的强大这处之一就是可以驯服和调教。下面介绍3种如何处理中英......
2020-08-19 313 EndNote,EndNote中英文混排
在英文写作翻译的时候,经常要用到英语词典。常用的有有道词典,金山词霸等。但是除了这些词典软件,还有很多词典可以选择。科研动力就使用过的英语词典给大家介绍一下。 金山词霸......
2020-09-12 236 英语翻译词典
EndNote 转换 ProCite 数据库的方法比较简单,因为 EndNote 可以直接打开 ProCite 的数据库。本文介绍一下 ProCite 数据库转换为 EndNote 数据库的方法。顺便说一句,ProCite 也被 EndNote 收购了。 EndNote 转......
2020-09-21 211 EndNote,EndNote导入文献,EndNote插入文献