前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Bar Chart Race Matplotlib制作

Bar Chart Race Matplotlib制作

作者头像
DataCharm
发布于 2021-02-22 07:11:25
发布于 2021-02-22 07:11:25
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

(微信公众号由于改版,导致留言功能不能使用,本期采用 留言小程序 进行留言功能测试,如果不行或者效果较差,大家有什么问题可选择点击公众号,找到 “找我” ,添加本人微信号进行问题咨询和数据获取。等人数到达一定数量后,我会构建学习交流群,大家共同进步

效果预览

动态图表加上音乐总能给人不一样的感觉

,下面就详细介绍此类动态图的matplotlib制作过程

01. 引言

Bar Chart Race(条形竞赛图)是最近出现频率较高的一种可视化作品,这种图表主要表达的是一种数据随时间的整体变化趋势,较常见的的实现方式为使用flourish工具(https://flourish.studio/),此网站工具有免费版和付费版,如需快速制作,大家可以考虑使用这个网站的工具进行多种可视化作品的绘制与展示。抱着学习的目的,本期推文使用python可视化包matplotlib进行Bar Chart Race的绘制,这也是继上两篇动态图表教程后最后一篇matplotlib动态图表教程(毕竟原理都差不多,最多就是数据处理方法的不同,后面遇到好的动态作品,还是会推出matplotlib教程的

02. 数据处理

导入所需库和数据

数据展示 如下(部分):

数据形式较为简单,即国家名(name)、时间(time)、人口(population)、地区(regison),处理过程较为简单,数据可视化部分则有不少的知识点可以讲解。

03. 数据可视化

绘制此类可视化作品的静态图表较为简单,matplotlib的barh()方法即可绘制水平条形图(ps:为了更加接近于原始图表即条形图边角圆滑,但目前还没找到matplotlib的设置方法,有知道的小伙伴可以留言告知啊

,这里提一下 ggplot2 的拓展包 ggchicklet 包可以实现条形图圆角处理,后期可以考虑利用此包出一篇推文

(1)利用一年的数进行水平条形图那个图的绘制,如下:

其中eq(current_test)为pandas数据筛选操作常用技巧,等价于gapminder.loc[gapminder['time'] == current_test,:] 布尔条件选择,具体内容可参考pandas官网教程。sort_values()实现数据以’pipulation’列进行降序排列。结果如下:

(2)构建地区颜色字典

使用python字典给‘regison’进行颜色赋值,这里‘regison’分为4种,构建颜色字典如下:

结果如下:(字典的构建可以在绘图过程中省去很多麻烦的步骤,如类别颜色赋值,感兴趣的同学可以多加练习)

(3)构建地区与国家对应字典

使用Series的to_dict()方法构建字典,结果如下(部分):

可以看出 地区(region) 与 国家(name) 之间已构建出字典形式。上述两个字典的构建在本推文颜色赋值中非常重要,字典和列表等灵活应用,可以使平时的数据处理过程变得更加简单和高效。

(4)给barh及对应的文本赋颜色

操作如下:

解释:红方框中的为python列表生成式,此方法高效简单,在数据处理过程中非常有用,希望大家可以掌握。而

colors_region[region_color_dic[x]]操作则根据上述定义的两个字典实现颜色赋值,即先根据‘name’中的国家名在字典region_color_dic选择对应的’region’,将选择出的region名再在字典colors_region选择对应的颜色值。

国家名称及人口数文本添加代码如下:

首先使用enumerate(zip())实现同时遍历多个对象,红色方框内的与上面知识点类似,绿色方框内为数字格式化操作,也可采用以下方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'{:,.0f}k'.format(value)

以上即为绘制过程中需要注意的点,完整绘图代码如下:

重要部分解释如下

(1)第29行采用

sort_values(by='population',ascending=True).tail(12) 与之前的方法一样,只不过为升序排列,选取后12行数据。

(2) 第 48、49 行自定义x轴刻度标签形式

(3) 第 52 行消除y轴刻度

(4) 第 54 行设置x轴网格形式

(5) 第 60–66 行添加地区图例,网上较多类似教程无图例添加,使图表看起来不够完整,此方法通过plt.Rectangle()单独构建图例,如下:

下图为一年份数据绘制结果:

04. 总结

Bar Chart Race 图表的Matplotlib制作过程总体而言不难,此篇推文的可取之处有两点:python字典和列表表达式的灵活应用Matplotlib多类别条形图图例的添加,希望这两点可以在大家的可视化绘制中有所帮助。至此Matplotlib动态图表系列推文先告一段落,当然后期遇到好的动态可视化作品,我还是会继续推出此系列教程

。今后一段时间将会陆续推出Matplotlib商务图表的制作教程,主要目的还是练习自己的可视化技巧颜色搭配技巧

>>>

参考链接

(1)https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.barh.html?highlight=barh#matplotlib.axes.Axes.barh

(2)https://pandas.pydata.org/docs/user_guide/indexing.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python-Matplotlib 动态柱形图绘制(数据分享)
这期开始,我们将公众号刚开始的不成熟风格文章推文改成与现在相统一的风格,同时也为了解决大家复制不了代码的问题,本期推文,将介绍使用Python-matplotlib 绘制动态柱形图的教程推文,主要涉及的知识点如下:
DataCharm
2021/02/22
1.6K0
Python-Matplotlib 动态柱形图绘制(数据分享)
动态曲线图(linechart)--Matplotlib绘制
配上动感的音乐感觉就是不一样啊,要达到上述效果除了核心的Matplotlib绘图外,其他工具和上篇推文 Hans Rosling Charts Matplotlib 绘制 所使用的工具一样啊。下面将分以下几个部分对制作过程进行介绍。
气象学家
2020/09/04
2.4K0
动态曲线图(linechart)--Matplotlib绘制
Hans Rosling Charts Matplotlib 绘制
动态的图表拥有静态图表不能比拟的优势,能够有效反映出一个变量在一段时间的变化趋势,在PPT汇报演讲中是一大加分项,而在严谨的学术图表中则不建议使用。统计学家Hans Rosling在TED上关于《亚洲何时崛起》的演讲,其所采用的数据可视化展示方法可谓是近年来经典的可视化案例之一,动态的气泡图生动的展示了中国和印度是如何在过去几十年拼命追赶欧美经济的整个过程。可以说,Hans Rosling 让数据变得不再枯燥无味,使其生动的展示在大众面前,为了对这位伟大的统计学家的怀念(Hans Rosling 于2017年2月7日离开了这个世界), 本次教程将使用Python 经典的可视化库Matplotlib再现这经典的动态气泡图,或者说Hans Rosling Charts。
气象学家
2020/07/01
3.3K0
Hans Rosling Charts Matplotlib 绘制
Matplotlib 另类时间变化图制作
本期推文主要介绍的还是Matplotlib关于 线(lines) 图的制作,虽然Matplotlib 制作线图的灵活性无法和ggplot2 的geom_segment()相比,但对于使用 Python进行可视化绘制的小伙伴们,希望本期推文对你有所帮助
DataCharm
2021/02/22
1.5K0
Matplotlib 另类时间变化图制作
Matplotlib 气球图 制作
Matplotlib 制作稍带“艺术”的可视化作品,ggplot2 基于其优秀绘图图层设置及多种拓展绘图包可以较为灵活的完成此类任务,但Matplotlib也不是完全不可以,本期推文用python经典的绘图包Matplotlib进行“气球”图(通过图形合理搭配实现)的绘制,主要涉及Matplotlib 散点图(sactter())及 线 vlines()、mlines()及PatchCollection()等的灵活应用。上期推文预告的效果图在文末的代码链接(notebook)中 也会有绘制方法,本期推文为完善版本
DataCharm
2021/02/22
2.3K0
Matplotlib 气球图 制作
精选6种制作竞赛动图的方法,收藏!
上面的两个动图,就是条形竞赛图和折线竞赛图,今天我们就来看看都有哪些方便的方法来制作呢
周萝卜
2022/02/10
1.4K0
精选6种制作竞赛动图的方法,收藏!
Matplotlib玩转动态可视化
最近看到很多盆友们用pyecharts、Bokeh和plotly等绘图库制作动态图,还有用pbi制作的,以及网页工具flourish等。其实matplotlib这个经典绘图库也是可以的,这不就来了嘛~
刘早起
2020/09/23
2.3K0
Matplotlib玩转动态可视化
FiveThirtyEight 类型图表 Matplotlib制作
FiveThirtyEight网站,也称作538,是一个专注于民意调查分析,政治,经济与体育的博客。网站于2008年3月7日建立,其名称来源于美国选举人团中选举人的数量,该网站集政治(Politics)、运动(Sports)、科学与健康(Science&Health)、经济(Economics)、文化(Culture)于一身,涉及面非常之广。作为可视化练习教程,我们关注的是其优秀的可视化作品。今天的推文就是对其中一副可视化作品进行仿制。如下所示(https://fivethirtyeight.com/features/fandango-movies-ratings/):
DataCharm
2021/02/22
1.2K0
FiveThirtyEight 类型图表 Matplotlib制作
Python-matplotlib 散点图绘制
本期推文的主要内容是散点图的绘制教程,所使用的数据关于全球教育水平划分的师生比例,涉及到的包主要为matplotlib和seaborn,当然用于数据处理分析的pandas和 numpy也必不可少。
DataCharm
2021/02/22
1.6K0
Python-matplotlib 散点图绘制
动态气泡图绘制,超简单~~
效果预览 http://mpvideo.qpic.cn/0b78imaaaaaahiaex25z7rpfaq6dabbqaaaa.f10002.mp4?dis_k=1114c40f6f8ad01d51
DataCharm
2022/02/17
3.8K0
动态气泡图绘制,超简单~~
Matplotlib入门
标题中的英文首字母大写比较规范,但在python实际使用中均为小写。 2018年7月30日笔记 作者的集成开发环境是jupyter,Python版本为3.6 建议阅读本文的读者安装anaconda3,里面包含了jupyter、python3.6和matplotlib库 下载链接: https://pan.baidu.com/s/1kKCvpXAlTdRri4lSP6gykA 密码: pygy
潇洒坤
2018/09/10
2.3K0
Matplotlib入门
python数据科学系列:matplotlib入门详细教程
上篇中,介绍了numpy的常用接口及使用,并对部分接口方法进行了详细对比。与之齐名,matplotlib作为数据科学的的另一必备库,算得上是python可视化领域的元老,更是很多高级可视化库的底层基础,其重要性不言而喻。
luanhz
2020/05/14
2.9K0
盘点:全球十大标志性可视化作品已被选出
FastCoLabs邀请了几位赫赫有名的可视化博客博主来回答他们眼中最具标志性的可视化作品以及原因,受邀的三位分别是Eager Eyes的Robert Kosara,Visualising Data的Andy Kirk,以及National Public Radio的数据编辑Matt Stiles。大家就来看看他们选出的可视化作品的“标志性”何在吧。 排名前三的作品是Wind Map,Gapminder以及Flow Streamgraph,这三个作品在我们的课程PPT里都有提及,相信大家也都不陌生
小莹莹
2018/04/19
9600
盘点:全球十大标志性可视化作品已被选出
可视化技能之Matplotlib(下)|可视化系列02
在本系列的上篇文章里,我们从Matplotlib的基础可视化框架开始,逐步画出折线图、柱状图等基础图表,通过对坐标轴标签、标题文本等的精细调节画出信息更明确丰富的可视图,也实践了双轴图及子图,最后看了下极坐标系下绘图的效果。本篇继续探索Matplotlib的强悍可视化能力。
蛰虫始航
2020/04/08
1.7K0
可视化技能之Matplotlib(下)|可视化系列02
刷爆全网的动态条形图,原来5行Python代码就能实现!
比如数可视的「花火hanabi」,嫡数的「镝数图表」,以及国外网站「Flourish」。
小F
2020/10/09
2.2K0
刷爆全网的动态条形图,原来5行Python代码就能实现!
可视化技能之Matplotlib(上)|可视化系列01
Matplotlib可以说是Python最声名远扬的可视化库了,也是Python数据分析库的“三驾马车”之一。Matplotlib是基础而非常强大的可视化库,Seaborn等好用的可视化库是在前者的基础上进行的封装。Matplotlib擅长快速出简单的图、有丰富的接口进行精细化绘图、和Numpy结合做科学可视化及三维图配合默契、三维图。但也有些缺点,如不容易基于实用目的绘制有一定难度的图表(如小提琴图等)、标签等元素需指定坐标而不能自适应优化显示、难以实现交互。
蛰虫始航
2020/04/09
1.9K0
万字长文 | 超全代码详解Python制作精美炫酷图表教程
本文将探讨三种用Python可视化数据的不同方法。以可视化《2019年世界幸福报告》的数据为例,本文用Gapminder和Wikipedia的信息丰富了《世界幸福报告》数据,以探索新的数据关系和可视化方法。
昱良
2019/11/27
3.3K0
万字长文 | 超全代码详解Python制作精美炫酷图表教程
使用 Matplotlib 这么久,竟不知道数据可以动起来
在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。
小白学视觉
2022/09/28
5360
可视化作品欣赏 | 有统计报告,更有艺术加持~~
今天搞一次数据可视化作品欣赏!精选出的10副可视化作品,这些可视化作品主要包括两种,如下:偏数据报告类型、偏数据艺术类型。
朱小五
2021/10/18
1.1K0
可视化作品欣赏 | 有统计报告,更有艺术加持~~
可视化作品欣赏 | 有统计报告,更有艺术加持~~
又到了一个月(9月)一次的数据可视化作品欣赏环节啦,本期小编精选出的10副可视化作品,这些可视化作品主要包括两种,如下:
DataCharm
2021/10/12
7450
推荐阅读
相关推荐
Python-Matplotlib 动态柱形图绘制(数据分享)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验