复习回顾

在matplotlib模块中我们前面学习绘制如折线、柱状、散点、直方图等静态图形。我们都知道在matplotlib模块主要有三层脚本层为用户提供快捷的绘制图形方法,美工层接收到脚本层的命令后将绘制指令发送给后端,后端提供执行绘制操作、事件响应、图形渲染工作。具体的详情可见往期文章如下

在matplotlib模块中,除了以上静态图形的绘制,还提供Animation类支持绘制动态图制作

Python matplotlib 绘制散点图 还不收藏起来_编程简单学的博客-CSDN博客这么详细的Python matplotlib 绘制图形 还不赶紧收藏_编程简单学的博客-CSDN博客Python matplotlib 绘制散点图 还不收藏起来_编程简单学的博客-CSDN博客

这么详细的Python matplotlib底层原理浅析_编程简单Python matplotlib 绘制散点图 还不收藏起来_

python入门到进阶,爬虫数据分析全套资料分享讲解 (#1) ·CHINA

本期,我们对matplotlib.animation绘制动态图方法学习,Let's go~

1. Animation 概述

Animation 是matplotlib模块制作实时动画的动画类,包含三个子类

  • Animation 是动画类的基类
  • TimedAnimation 是 Animation的子类,可通过绘制时间绘制每一帧动画
  • FuncAnimation 是基于Timed子类,可以通过重复调用fun()方法来绘制动画
  • ArtistAnimation 使用一组Artist对象来绘制动画
  • 绘制动画特点

    • 绘制对象引用:动画对象要在制作动画时要保持长期有效,否则会被系统资源回收,动画暂停
    • 动画计时器:是对动画对象推进的唯一引用对象
    • 动画保存:需要使用animation.save、animation.To_html5_video或animation.To_jshtml进行动画保存
    • matpoltlib.animation 还提供关于电影格式的类
  • 动画制作方法

    matplotlib.animation.Animation()是动画类的基类,是不能被使用的。常用的两个类主要animation两个子类

    • matplotlib.animation.FuncAnimation

      matplotlib.animation.FuncAnimation(fig, func,
      frames=None,
      init_func=None,
      fargs=None,
      save_count=None,
      * , cache_frame_data=True,
      **kwargs)
      复制代码
    • matplotlib.animation.ArtistAnimation
      matplotlib.animation.ArtistAnimation(fig,
      artists,
      *args,
      **kwargs)
      复制代码

2. 绘制动态图步骤

matplotlib 绘制动态图最重要的是要准备好每一帧显示的数据,通常我们使用FuncAnimation可以传入产生连续数字的func方法,因此绘制动态图主要步骤为:

  • 导入绘制图形的matplotlib.pyplot和制作动态图的matplotlib.animation
import matplotlib.pyplot as plt
import matplotlib.animation as animation
复制代码
  • 使用Pyplot.subplots创建一个fig画布对象和一组子图
fig,ax = plt.subplots()
复制代码
  • 调用numpy.random或者numpy.arange()等方法准备x,y轴数据
x = np.arange(0, 2*np.pi, 0.01)
复制代码
  • Axes对象调用plot()、scatter()、hist()等绘制方法,并赋值给list对象
line, = ax.plot(x, np.cos(x),color="pink")
复制代码
  • 需要定义一个专门update data方法生成每一帧显示的数据例如func()
def update(i):line.set_ydata(np.cos(x + i / 50))return line,
复制代码
  • 调用animation.FuncAnimation把fig和update()方法
ani = animation.FuncAnimation(fig, update, interval=20, blit=True, save_count=50)
复制代码
  • 调用plt.show()显示出动态图
plt.show()
复制代码
  • 我们可以调用animation.save("movie.gif",writer="pillow")保存动画为gif格式

ps:我们需要提前pip install pillow 安装pillow库,否则会提示无法使用


ani.save("movie.gif",writer='pillow')复制代码

3. 小试牛刀

我们使用animation类绘制直方动态图,在绘制的过程中需要注意几点

  • 使用numpy.linspace生成100个在-5,5的等差数列
  • 使用numpy.random.randn()生成随机数据
  • Axes对象调用hist()返回n,bins,BarContainer
  • 定义一个递归update()函数,使用Python闭包跟踪barcontainer来更新每次直方图矩形高度
  • 调用animation.FuncAnimation()方法绘制动态图
def drawanimationhist():fig, ax = plt.subplots()BINS = np.linspace(-5, 5, 100)data = np.random.randn(1000)n, _ = np.histogram(data, BINS)_, _, bar_container = ax.hist(data, BINS, lw=2,ec="b", fc="pink")def update(bar_container):def animate(frame_number):data = np.random.randn(1000)n, _ = np.histogram(data, BINS)for count, rect in zip(n, bar_container.patches):rect.set_height(count)return bar_container.patchesreturn animateax.set_ylim(top=55)ani = animation.FuncAnimation(fig, update(bar_container), 50,repeat=False, blit=True)plt.show()
复制代码

总结

本期,我们对matplotlib模块制作动态图类animation相关方法学习。在绘制动态图过程中,需要定义func方法来更新每一帧所需要的数据。

以上是本期内容,欢迎大佬们点赞评论,下期见~

超详细的Python matplotlib 绘制动态图相关推荐

  1. 超详细的Python matplotlib 绘制柱状图

    复习回顾 Python 为数据展示提供了大量优秀的功能包,其中 matplotlib 模块可以方便绘制制作折线图.柱状图.散点图等高质量的数据包. 关于 matplotlib 模块,我们前期已经对ma ...

  2. 超详细的Python matplotlib 绘制直方图 赶紧收藏

    前言 经过前面对 matplotlib 模块从底层架构.基本绘制步骤等学习,我们已经学习了折线图.柱状图的绘制方法. 在分析数据的时候,我们会根据数据的特点来选择对应图表来展示,需要表示质量这一概念, ...

  3. 这么详细的Python matplotlib 绘制图形 还不赶紧收藏

    前言 我们前面对matplotlib模块底层结构学习,对其pyplot类(脚本层)类提供的绘制折线图.柱状图.饼图.直方图等统计图表的相关方法,列举往期文章如下. 超详细的Python matplot ...

  4. Python+Matplotlib绘制动态爱心图

    函数FuncAnimation(fig,func,frames,init_func,interval,blit)是绘制动图的主要函数,其参数如下: a.fig 绘制动图的画布名称 b.func自定义动 ...

  5. 不愧是摸鱼高手Python matplotlib 绘制频谱图都会,能怪老板不管

    复习回顾 matplotlib 是Python专门用来绘制渲染的模块,其底层主要分为脚本层.美工层和后端.脚本层为我们提供常见图形绘制如折线.柱状.直方.饼图.以往文章 这么详细的Python mat ...

  6. Python matplotlib绘制雷达图

    Python matplotlib绘制雷达图 本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指 ...

  7. python制作雷达图_如何利用Python matplotlib绘制雷达图

    本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,雷达图几乎随处可见,应用场景非常多. 一. ...

  8. Python matplotlib 绘制三维图并修改样式

    问题描述 通过Python matplotlib绘制三维函数图,函数内容如下: 为了简化表达,对测试函数的维度做降维表达,从100维降到2维,这样就可以通过三维函数来表达了.样式上需要满足以下要求: ...

  9. python matplotlib绘制折线图_Matplotlib实践系列:折线图完全示例

    matplotlib是Python下最常用的数据可视化绘图库,功能强大,绘图精美,虽然也有基于matplotlib的seabron库,极大得简化的绘图的流程,但个人还是更加偏向于在静态数据可视化方面使 ...

最新文章

  1. Google BigQuery——企业级大数据分析工具
  2. 企业深入使用微服务后会面临哪些问题?云原生全链路灰度给了新思路
  3. c#操作excel后关闭excel.exe的方法
  4. Redis使用不当导致应用卡死
  5. BZOJ1861: [Zjoi2006]Book 书架
  6. POJ1270 Following Orders(拓扑排序+回溯)
  7. 计算机考试画箭头,几何画板如何画箭头 绘制方法介绍
  8. java正则匹配_Java正则表达式详解
  9. Nature、science、cell旗下刊物
  10. python爬虫微信公众号视频
  11. 技嘉x79up4支持服务器内存吗,技嘉X79-UP4主板硬件规格解析
  12. 一天天学WG--第一天
  13. TECO状态的生产订单结算到在制品怎么办?
  14. 青春不只风花雪月更当豪迈向上
  15. 欧姆龙OMRON PLC之HostLink通讯协议(五)- CP1H以太网FINS/TCP通讯实例
  16. MultiSigWallet实例
  17. 极简风格的演讲型幻灯片设计
  18. 数字电路和模拟电路-1基础知识
  19. JQuery渐变色动画效果
  20. 数据交换协议--JSON、XML、YAML、TOML、TLV

热门文章

  1. R语言str_starts函数和str_ends函数检查在字符串的开头或者结尾是否存在特定字符串或者字符串模式
  2. 解决:Error: Aesthetics must be either length 1 or the same as the data (5): fill
  3. pandas计算滑动窗口中的中位数实战(Rolling Median of a Pandas Column):计算单数据列滑动窗口中的中位数、计算多数据列滑动窗口中的中位数
  4. R语言基础知识详解及概括
  5. CLI、终端 (Terminal)、Shell、TTY、Console、Bash都是什么?
  6. python使用joblib模块保存和加载机器学模型
  7. PCA图像数据降维及重构误差分析实战并使用TSNE进行异常数据可视化分析
  8. 差异表达基因火山图(ggplot函数)
  9. 从FASTQ到BAM经历了什么?
  10. 3.4.2  连接查询