超火动态排序图:代码不到40行,手把手教你!
作者:QIML编辑部
文章经授权转载
超火动态排序图:
代码不到40行,手把手教你!
— 01 —
前言
最近,这种动态排序条形图视频超级火,如下图:
具体来说,这种图可以叫:Bar Chart Race,有什么国家GDP的、某某沉浮史等等,为了符合公众号的身份属性,我们为大家制作了这个较为简单的可视化视频: 2 015~2019中国私募基金市场风云变幻 ,先一睹为快吧!
和背景音乐一起播放更搭配哦!
择日不如撞日,今天公众号手把手教你!
我们 使用 最流行的 Python 语言 , 基于Matplotlib 来实现上面的动态效果。案例和数据自1500年以来世界上10个最大城市排名。
— 02 —
准备工作
导入相关库:
使用pandas读取相关城市人口数据集。我们只需要4列数据:’name’、’group’、’year’、’value’。一个名称映射到一个组,每年有一个值。
原始数据集:
— 03 —
数据转换
使用pandas进行转换,得到前10个值。
— 04 —
基础图
让我们画一个基本的柱状图。首先创建一个图形和一个坐标轴。然后使用 ax.barh (x,y) 绘制水平条形图。
— 05 —
颜色、标签
接下来,让我们根据组添加值、组标签和颜色。使用 colors 和 group_lk 为条形图添加颜色。
group_lk 是 name 和 group 值之间的映射。
— 06 —
细节刻画
为了方便起见,我们将代码迁移到draw_barchart函数中:
-
Text:更新字体大小、颜色、方向
-
Axis:将x轴移动到顶部,添加颜色和副标题
-
Grid:在bars添加
-
Format:逗号分隔值和轴标记符
-
Remove:框架,y轴标签
— 07 —
动态化,激动人心!
要对上图进行动画处理,我们将使用 matplotlib.animation 中的 FuncAnimation 。
Functionatio 通过反复调用函数(在画布上绘制)来创建动画。在本例中,该函数将是 draw_barchart 。 我们使用 frames ,这个参数接受你想运行的 draw_barchart 的值——我们将从1968年运行到2018年。
我们还可以通过下面的红框,调整速度、倒退等操作。
你可以将动画对象保存为视频或gif形式:
OK,大功告成!赶快一显身手吧!
整个代码不到40行!
觉得不错,点个在看呗!