前言

熟悉python数据分析的朋友一定对matplotlib库不陌生,这是做数据可视化最常用的包之一。虽然我们经常使用mattplotlib做一些静态的图表,比如折线图,柱状图,饼图等等,但是某些时候,我们需要让我们的图表动起来。最近因为工作上的需要,我尝试构建了动态柱状图,来描述各个数据在时间维度上的变化情况。主要用到的就是matplotlib中的animation模块。下面我就来介绍一下我的基本需求以及如何用该模块来实现需求。

需求描述

给定4个基本渠道,我希望通过柱状图的形式来描述各个渠道指标随着时间的变化。比如初始值列表为[3000,8000,10000,6000],在第一个时刻变为[2800,8000,10000,6000], 即第一个渠道下降200,在第二个时刻变为[2800,8000,9800,6000],即第三个渠道下降200。在后续的各个时刻,各个渠道的指标会不断变化。那么如何通过animation来实现它呢?话不多说,直接上代码。

实现代码

import matplotlib.pyplot as plt
import matplotlib.animation as animationfig,ax=plt.subplots(figsize=(10,6))def init(): #初始plot`x=['a','b','c','d']y=[3000,8000,10000,6000]ax.set_ylim(0,12000)init_plot=ax.bar(x,y,color=['red','blue','orange','green'],width=0.5)for i,j in zip(x,y):ax.text(i,j+0.05,'%.0f' % j,ha='center',va='bottom',fontsize=10)ax.set_title(f'Remain Amount for {len(x)} Channels After 0 Coming Customers')def animate(i): # 更新函数x=['a','b','c','d']# ys用于存储随着时间变化呈现值的变化情况ys=[[2800,8000,10000,6000],[2800,8000,9800,6000],[2800,7800,9800,6000],[2800,7800,9800,5800],[2600,7800,9800,5800],[2600,7800,9600,5800],[2600,7800,9600,5600],[2600,7600,9600,5600],[2400,7600,9600,5600],[2200,7600,9600,5600]]ax.cla() # 清除之前的内容ax.set_ylim(0,12000) #保证y轴不变update_plot=ax.bar(x,ys[i],color=['red','blue','orange','green'],width=0.5)idx=ys.index(ys[i])for i,j in zip(x,ys[i]):ax.text(i,j+0.05,'%.0f' % j,ha='center',va='bottom',fontsize=10)ax.set_title(f'Remain Amount for {len(x)} Channels After {str(idx+1)} Coming Customers')ani=animation.FuncAnimation(fig,animate,range(10),init_func=init,interval=500,repeat=False)
plt.show()

其中最核心的就是如下代码

ani=animation.FuncAnimation(fig,animate,range(10),init_func=init,interval=500,repeat=False)

其中的基本参数包括1.基于哪个窗口绘图(fig), 2.更新函数(animate) 3.更新的帧数(次数,这里我只有10组需要更新的数据) 4.初始绘图函数(init) 5.更新速度(interval, 越大停顿越久) 6.是否重复(repeat,即是否在一轮更新完成后再次重新更新)。当然还有其他可传入的参数,详情参考官网。

顺便说一下,如果需要在jupyter notebook中实现动态效果,需要添加如下语句

%matplotlib notebook


以上是代码运行完后的效果图,因为时间原因就不制作动图了,大家可以自行运行代码来感受动态变化的情形。如有任何疑问,欢迎留言。谢谢

python使用matplotlib库构建动态图表 --基于animation模块相关推荐

  1. python 颜色_如何使用python中matplotlib库分析图像颜色

    用代码分析图像可能很困难.你如何使代码"理解"图像的上下文? 通常,使用AI分析图像的第一步 是找到主要颜色.在如何使用python中matplotlib库分析图像颜色中,我们将使 ...

  2. Python学习-Matplotlib库绘制简单点阵图、线型图操作

    Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...

  3. python如何安装matplotlib_详解python安装matplotlib库三种失败情况

    (可能只有最后一句命令有用,可能全篇都没用) (小白方法,可能只适用于本人情况) 安装matplotlib时,出现的三种失败情况 1.read timed out 一开始我在pycharm终端使用pi ...

  4. Python的matplotlib库画图不能显示中文问题解决

    Python的matplotlib库画图不能显示中文问题解决 参考文章: (1)Python的matplotlib库画图不能显示中文问题解决 (2)https://www.cnblogs.com/CQ ...

  5. Ubuntu16.04 下python的matplotlib库加入中文字体(微软雅黑)

    Ubuntu16.04 下python的matplotlib库加入中文字体 一.首先安装微软雅黑字体 1.下载或者拷贝微软雅黑字体 2.将待安装的字体复制到Ubuntu下面的字体位置`/usr/sha ...

  6. python的matplotlib库绘制条形图、散点图、饼图、折线图

    python的matplotlib库绘制条形图.散点图.饼图.折线图 当我们学会了爬虫,抓取到了一些数据,接下来就是做数据分析了.本文章介绍绘制图形的基本代码. 打开cmd用pip 安装,若输入pip ...

  7. Python 之matplotlib库的安装及Read timed out Error的解决方案

    Python 之matplotlib库的安装 打开cmd窗口.点击开始栏,搜索cmd并打开. 找到安装的Python路径.可以通过右键点击Python快捷键,查找文件路径.(博主电脑并未分盘,故安装到 ...

  8. python的matplotlib库怎么安装,用pip给python安装matplotlib库的详细教程

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形. 1.首先在python里安装pip,打开安装python的文件夹,找到pyt ...

  9. python动态图表变化_用 Matplotlib 库生成动画图表

    更多文章请关注微信公众号:硬核智能 动画是一种展示现象的有趣方式.相对于静态图表,人类总是容易被动画和交互式图表所吸引.在描述多年来的股票价格.过去十年的气候变化.季节性和趋势等时间序列数据时,动画更 ...

最新文章

  1. 一个线程池 bug 引发的 GC 思考!
  2. Arduino与NodeMCU——联网
  3. 项目管理 - 供应商选择 - 重点条件
  4. NgRx createSelector 工具函数的三个类型参数
  5. 移动端适配的几种解决办法
  6. LNMP源码安装脚本
  7. SAP License:SAP新总帐-开篇
  8. 给Python初学者的入门课程建议
  9. 有关STL使用上的一些注意事项。关于某些函数的参数问题。
  10. Django:报错 unsupported format character ‘Y‘ (0x59) at index 70
  11. 《数学分析新讲》_张筑生,12.5节:隐函数定理(1)
  12. 在Android4.0以上设备的虚拟按键中显示menu键
  13. kubernetes(K8s)容器设计模式实践案例 多节点选举模式
  14. vue3的逻辑复用抽离
  15. windows下管理员用户与标准用户切换过程中的坑
  16. c语言中用中文转化数字,用C语言写中文数字字符串转数值变量
  17. IBM V7000存储服务器配置
  18. 聚合支付行业的基本情况
  19. 如何查看自己steam库里游戏是哪个区的
  20. Linux下海峰五笔98版码表及安装说明自动调整词频

热门文章

  1. Python爬虫入门教程06:爬取数据后的词云图制作
  2. SVO (1)跑数据集
  3. 高斯消元法求解方程组
  4. 运行vue项目时,如果一直报eslint语法错误的解决方案
  5. 今晚开启公募的雪崩协议,带协议层先进入3.0
  6. C语言——获取键盘方向键效果
  7. 什么是宝塔面板?宝塔面板的作用和功能是什么?
  8. 初学OpenCV:用本地摄像头拍照并保存为灰度图片
  9. uniapp团购商城源码在哪里下载?
  10. 某计算机的存储器按字节编址,(12 分)某计算机存储器按字节编址,虚拟(逻辑)地址空间大小为 16MB,主存(物 理)地址空间大小为 1M_搜题易...