python画动态图,python动图绘制代码
到今天为止,数据可视化的内容已经更新到第五章了。
如果你也想跟我学matplotlib,可以点击下面送门前系列文章:
1.准备工作
再次声明我使用的工具和环境:Anaconda Jupyter Notebook
建议你我用同一个工具,这样你就可以毫无痛苦的学习这个系统的教程了。在Jupyter Notebook中保存动态图形,需要强大的图形处理软件ImageMagick的支持。
所以在您继续之前,您需要安装这个工具。请自行搜索引擎解决安装方法。
安装完成后,请打开CMD终端,检查安装是否成功。如果执行过程中没有错误,安装就成功了。
魔法版
2.绘图原理
首先要明确matplotlib只能绘制和显示静态图形。那么动态图是如何实现的呢?动态图片和视频一样,都是由帧组成的。拼接这些图片的工作由ImageMagick完成。
问题又来了。这些一帧一帧的图片如何在程序中生成?
Matplotlib给我们提供了一个功能,动画。FuncAnimation,用它我们可以轻松完成这些图片。最后可以用ImageMagick处理。
接下来看一下画出来的整体代码框架(伪代码)。
#导入相关模块
importnumpyasnp
importmatplotlib.pyplotasplt
fromIPython.displayimportImage
frommatplotlib . animationimportfuncinimation
#生成数据(用于传入updata函数)
defdata_gen():
及格
#初始化图像(例如坐标范围)
definit():
及格
#将最新数据添加到图像中
取消更新(数据):
及格
#核心方法条目
ani=FuncAnimation()
#保存gif动态图形
ani.save(ming.gif ,writer=writer)
#在页面上显示gif图片
图像(url=。/Ming . gif’)
03.方法参数
这一节最重要的知识点其实是一个FuncAnimation,可以接收很多参数。要使用它,首先要知道这些参数有什么用途。图:图为动画。
Init_func:自定义开始帧,即传入新定义的函数Init。
间隔:更新频率,单位为毫秒
Blit:选择是更新所有点还是仅更新已更改的点。应选择True。
Func:从frames函数接收帧值,作为更新图像的最新数据。
框架:可接受的对象有iterable、int、generator function或none。生成的数据传递给func函数。
4.实用解释
经过一番尝试,发现无法在笔记本中直接使用ImageMagick。
我们必须显式指定其路径,并生成ImageMagickFileWriter的实例,以便以后保存图像。
importmatplotlib.pyplotasplt
PLT . RC params[ animation . convert _ path ]=\
e:\ program files \ ImageMagick-7 . 0 . 8-Q16 \ magick . exe
frommatplotlib . animationimportimagemagickfilewriter
writer=ImageMagickFileWriter()
具体绘图代码如下。
#导入相关模块
importnumpyasnp
importmatplotlib.pyplotasplt
fromIPython.displayimportImage
frommatplotlib . animationimportfuncinimation
fig,ax=plt.subplots()
xdata,ydata=[],[]
#注意,这里的,不能保存。
ln,=ax.plot([],[], r-,animated=False)
#初始化图像(例如坐标范围)
definit():
ax.set_xlim(0,2*np.pi)
ax.set_ylim(-1.1,1.1)
#注意,这里的,也不能保存
returnln,
#将最新数据添加到图像中
取消更新(框架):
xdata.append(框架)
ydata.append(np.sin(帧))
ln.set_data(xdata,ydata)
#注意,这里的,也不能保存
returnln,
#核心方法条目
ani=FuncAnimation(图,
更新,
frames=np.linspace(0,2*np.pi,50),
间隔=5,
init_func=init,
blit=True)
#保存gif动态图形
ani.save(ming.gif ,writer=writer)
#在页面上显示gif图片
图像(url=。/Ming . gif’)
得出的结果如下:
今天我只讲基本原理,让你知道动态图是怎么实现的。而那些很酷的图片只是复杂的代码,对理解整个逻辑没有什么帮助,这里就不赘述了。学完基本原理后,可以自己尝试一下。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。