python画动态图,python动图绘制代码

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: