Python利用matplotlib实现制作动态条形图

目录
  • 制作思路
  • animation

大家好,本文将分享如何使用matplotlib制作动态条形图,制作的图很美,这个是我在之前发布的一篇中使用的图片,

效果如下

制作思路

为了方便大家学习,我将不直接进行讲解,而是以我是如何一步步制作的思路来介绍整个过程。

说到用 Python 制作动态图,首先想到的肯定是一些直接拿来就用的库,虽然我没做过,但是我相信一定有且不止一个,搜了一圈后发现有个bar chart race库看起来不错

毕竟有现成的轮子,只需要填充数据即可,但是研究了一番,正如我之前所说,越好看的图对数据的要求越高,这个动态图的库指定数据必须类似如下格式

即有时间和国家两个维度,通过时间的变化来动态变化数据,但是我的数据很简单,就一列人名一列数据如下

如果再将数据强行修改成该库所需要的格式,花费的功夫将更多!所以果断放弃,回到我熟悉的matplotlib上,首先很自然的想法就是,根据每一行,写一个循环,每次循环就创建一个条形图。

这个想法是完全可以的,也有很多人这么做了,但是有一个问题就是做出来的效果太难看了,并且每次循环都需要重新生成画布绘图需要一定时间,这也会让最后的动态图显的不连贯。所以稍作尝试后这个思路也被抛弃了。

animation

又经过一番探索后,终于找到一个合适的工具——animation模块,可以完美的实现我的需求,只需要将你的绘图函数写好,将涉及到的参数空出来,通过FuncAnimation来更新数据即可。

当然我也是第一次接触,虽了解思路但不清楚具体实现逻辑,所以先从官方拉一个demo来看看整个过程如何实现

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = ax.plot([], [], 'r-', animated=False)

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=True)

HTML(ani.to_jshtml())

上面这段代码取自官方文档,并不难读懂,首先创建figureaxes,之后将涉及到的数据xdata,ydata空出来,再用update函数来更新数据并绘图,具体为将数据赋给frames,通过FuncAnimation实例传到update中实现迭代绘图,最后可以使用ipython的内置工具来将动态图展示在notebook中,效果如下

到这里基本上就搞明白整个过程了,下面我们只需要照猫画虎,写一个绘图函数并设计如何更新数据即可,具体如下

解释一下这一大段代码,抛开设置标题、坐标轴等修饰的部分,实际上也只做了一件事通过flag参数来绘制每一行数据

为什么需分为两段,因为我们图上需要七根柱子,而刚开始的时候只有不到七条数据,所以需要先创建七个空数据,在绘制前七个柱状图时,依次添加,而后面只需要从7开始,删除最早的一个数据,并向后追加一个数据即可,额外需要考虑的是我们需要为每一个数据确定一个颜色,所以还有一列颜色列也需要更新,最终我们的数据如下

在搞定shuang这个绘图函数后,只需要迭代更新数据并展示即可,相关代码如下

其中ani.save()可以将动图存储为gif,HTML(ani.to_html5_video())可以将动图保存为mp4,而HTML(ani.to_jshtml())则是在notebook中直接查看最终效果(注意第一次运行这里会报错,根据相关提示安装依赖即可),大家可以自己尝试

至于代码中如何添加标题、修改坐标轴、修改注释等操作本文就不在细讲了,最后是制作完成的效果,我个人感觉还不错,也可以导出为高分辨率视频添加bgm制作视频

以上就是Python利用matplotlib实现制作动态条形图的详细内容,更多关于Python matplotlib动态条形图的资料请关注我们其它相关文章!

(0)

相关推荐

  • python3使用matplotlib绘制条形图

    本文实例为大家分享了python3使用matplotlib绘制条形图的具体代码,供大家参考,具体内容如下 绘制竖状条形图 代码 from matplotlib import pyplot as plt from matplotlib import font_manager my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/arphic/ukai.ttc") a = ["战狼2"

  • Python制作动态词频条形图的全过程

    目录 前言 前期准备 数据的选择与获取 分词 筛选与可视化 总结 前言 "数据可视化"这个话题,相信大家并不陌生,在一些平台,经常可以看到一些动态条形图的视频,大多都是某国家 GDP 的变化或者不同国家疫情中感染人数的变化等等. 这篇文章,我们将使用 Python 绘制动态词频条形图,顾名思义,就是以词频作为数量指标的动态条形图. 前期准备 输入以下命令,安装必须的库: pip install JiashuResearchTools pip install jieba pip inst

  • python+matplotlib绘制3D条形图实例代码

    本文分享的实例主要实现的是Python+matplotlib绘制一个有阴影和没有阴影的3D条形图,具体如下. 首先看看演示效果: 完整代码如下: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # setup the figure and axes fig = plt.figure(figsize=(8, 3)) ax1 = fig.add_subplot(121

  • Python Matplotlib绘制条形图的全过程

    目录 条形图 单组条形图 水平条形图 多组条形图 堆积条形图 对称条形图 总结 条形图 条形图具有丰富的表现形式,常见的类型包括单组条形图,多组条形图,堆积条形图和对称条形图等. 单组条形图 条形图的每种表现形式都可以绘制成垂直条形图或水平条形图,以单组条形图的两种绘制方式为例. 垂直条形图 import matplotlib.pyplot as plt data = [10., 20., 5., 15.] plt.bar(range(len(data)), data) plt.show() T

  • Python实现动态条形图绘制的示例代码

    目录 动态条形图变动态柱状图 指定排序方式 限制条目数 设置固定条目 固定数值轴,使其不发生动态变化 设置图像帧数,默认 10 帧 设置帧率,单位时间默认为 500ms 设置每帧增加的标签时间,默认为 False 图形样式设置 条形图属性,可以设置透明度,边框等 添加动态文本 添加垂直条 设置柱状图颜色 两年前在 B 站上看到了一个宝藏 up 主,名叫 "Jannchie见齐",专门做动态条形图样式的数据可视化. 做出的效果还是很不错的,但工具使用的是 JS,不是 Python.于是尝

  • python matplotlib库绘制条形图练习题

    练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机

  • Python利用matplotlib实现制作动态条形图

    目录 制作思路 animation 大家好,本文将分享如何使用matplotlib制作动态条形图,制作的图很美,这个是我在之前发布的一篇中使用的图片, 效果如下 制作思路 为了方便大家学习,我将不直接进行讲解,而是以我是如何一步步制作的思路来介绍整个过程. 说到用 Python 制作动态图,首先想到的肯定是一些直接拿来就用的库,虽然我没做过,但是我相信一定有且不止一个,搜了一圈后发现有个bar chart race库看起来不错 毕竟有现成的轮子,只需要填充数据即可,但是研究了一番,正如我之前所说

  • Python利用pynimate实现制作动态排序图

    数据可视化动画还在用 Excel 做?今天分享一个简单的 Python 包就能分分钟搞定! 而且生成的动画也足够丝滑,效果是酱紫的: 这是一位专攻 Python 语言的程序员开发的安装包,名叫Pynimate. 目前可以直接通过PyPI安装使用. 使用指南 想要使用 Pynimate,直接import一下就行. import pynimate as nim 输入数据后,Pynimate将使用函数Barplot()来创建条形数据动画. 而创建这种动画,输入的数据必须是pandas数据结构(如下),

  • python之matplotlib学习绘制动态更新图实例代码

    简介 通过定时器Timer触发事件,定时更新绘图,可以形成动态更新图片.下面的实例是学习<matplotlib for python developers>一文的笔记. 实现 实现代码及简单介绍 通过self.user = self.user[1:] + [temp],每次删除列表的第一元素,在其尾部添加新的元素.这样完成user数据的动态更新.其他详细的解释见文中的注释部分. #-*-coding:utf-8-*- import wx from matplotlib.figure impor

  • Python利用matplotlib绘制约数个数统计图示例

    本文实例讲述了Python利用matplotlib绘制约数个数统计图.分享给大家供大家参考,具体如下: 利用Python计算1000以内自然数的约数个数,然后通过matplotlib绘制统计图. 下图为约数个数的散点图及其分布情况的条形图. Python代码: import collections import matplotlib.pyplot as plt def countDivisors(num): ans = 1 x = 2 while x * x <= num: cnt = 1 wh

  • Python利用matplotlib实现饼图绘制

    目录 前言 1. 等高线图概述 什么是饼图? 饼图常用场景 绘制等饼图步骤 案例展示 2. 饼图属性 设置饼图的颜色 设置标签 设置突出部分 设置填入百分比数值 饼图旋转 设置阴影 3. 调整饼图的大小 4. 添加图例 5. 镂空饼图 总结 前言 众所周知,matplotlib.pyplot 提供绘制不同表格绘制方法,如使用plot()方法绘制折线,bar()绘制柱 在matplotlib.pyplot 中还有一种图表用于直观表示占比情况的饼图,在matplotlib官网上也列举出非常多关于饼图

  • Python利用matplotlib画出漂亮的分析图表

    目录 前言 数据集引入 折线图 饼图 散点图 面积图 直方图 条形图 前言 作为一名优秀的分析师,还是得学会一些让图表漂亮的技巧,这样子拿出去才更加有面子哈哈.好了,今天的锦囊就是介绍一下各种常见的图表,可以怎么来画吧. 数据集引入 首先引入数据集,我们还用一样的数据集吧,分别是 Salary_Ranges_by_Job_Classification以及 GlobalLandTemperaturesByCity.(具体数据集可以后台回复 plot获取) # 导入一些常用包 import pand

  • Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度

    前言 matplotlib.pyplot是一些命令行风格函数的集合,使matplotlib以类似于MATLAB的方式工作.每个pyplot函数对一幅图片(figure)做一些改动:比如创建新图片,在图片创建一个新的作图区域(plotting area),在一个作图区域内画直线,给图添加标签(label)等.matplotlib.pyplot是有状态的,亦即它会保存当前图片和作图区域的状态,新的作图函数会作用在当前图片的状态基础之上. 在开始本文之前,不熟悉的朋友可以先看看这篇文章:Python

  • Python利用matplotlib做图中图及次坐标轴的实例

    图中图 准备数据 import matplotlib.pyplot as plt fig = plt.figure() x = [1, 2, 3, 4, 5, 6, 7] y = [1, 3, 4, 2, 5, 8, 6] - 大图 首先确定大图左下角的位置以及宽高: 注意,4个值都是占整个figure坐标系的百分比.在这里,假设figure的大小是10x10,那么大图就被包含在由(1, 1)开始,宽8,高8的坐标系内. # below are all percentage left, bott

  • Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple 二.matplotlib图像简介 matplotlib的图像分为三层,容器层.辅助显示层和图像层. 1. 容器层主要由Canvas.Figure.Axes组成. Canvas位

  • Python利用matplotlib绘制散点图的新手教程

    前言 上篇文章介绍了使用matplotlib绘制折线图,参考:https://www.jb51.net/article/198991.htm,本篇文章继续介绍使用matplotlib绘制散点图. 一.matplotlib绘制散点图 # coding=utf-8 import matplotlib.pyplot as plt years = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019] turnovers =

随机推荐