超火动态排序图:代码不到40行,手把手教你!

程序IT圈

共 1004字,需浏览 3分钟

 ·

2020-07-12 00:14

2e485bbbeb7e407f90885a46c4614606.webp





前言



最近,这种动态排序条形图视频超级火,如下图:


aebc2fb3d199af0ffff28ab6fb653c9e.webp


具体来说,这种图可以叫:Bar Chart Race,有什么国家GDP的、某某沉浮史等等,为了符合公众号的身份属性,我们为大家制作了这个较为简单的可视化视频:2015~2019中国私募基金市场风云变幻,先一睹为快吧!


背景音乐一起播放更搭配哦!



大家可以基于私募基金数据做出更多有趣的可视化来!也欢迎大家踊跃投稿哦!


择日不如撞日,今天公众号手把手教你!


我们使用最流行的Python语言基于Matplotlib来实现上面的动态效果。案例和数据自1500年以来世界上10个最大城市排名。





准备工作



导入相关库:


5e3212dee520bdf2f1f8dbeb08a3b118.webp


使用pandas读取相关城市人口数据集。我们只需要4列数据:'name'、'group'、'year'、'value'。一个名称映射到一个组,每年有一个值。


原始数据集:


0b4317b3ce669f6e63afe973182e9ecf.webp


1d32c9013b36a3782688922745adf497.webp

0a1738610f0b26f9783adb5f48406b87.webp





数据转换



使用pandas进行转换,得到前10个值。


1c101b7511e898e0d547356f6737c4e1.webp

f413c7b268a90a2f6e455abd69486d2e.webp





基础图



让我们画一个基本的柱状图。首先创建一个图形和一个坐标轴。然后使用ax.barh (x,y)绘制水平条形图。


02e2022fdf57e4e13d3629fb0c97e552.webp


c33447c3bad5dcc9678be6062994673b.webp





颜色、标签



接下来,让我们根据组添加值、组标签和颜色。使用 colors 和 group_lk 为条形图添加颜色。


8dffe4379df1c8fd30dc335f8a501f18.webp


group_lk 是 name 和 group 值之间的映射。


9c323bcbf55be75e1190d02069e73599.webp


865efea57dec50dd03d9d185188257ec.webp





细节刻画



为了方便起见,我们将代码迁移到draw_barchart函数中:


  • Text:更新字体大小、颜色、方向

  • Axis:将x轴移动到顶部,添加颜色和副标题

  • Grid:在bars添加

  • Format:逗号分隔值和轴标记符

  • Remove:框架,y轴标签








8d5f6a7a98f934eda6fc67e4966b2b1d.webp


a0d513ce118b792a454d2c60c27dfc4a.webp





动态化,激动人心!



要对上图进行动画处理,我们将使用 matplotlib.animation 中的 FuncAnimation


06a73b697746460da71f870643364614.webp


Functionatio 通过反复调用函数(在画布上绘制)来创建动画。在本例中,该函数将是 draw_barchart。 我们使用 frames,这个参数接受你想运行的 draw_barchart 的值——我们将从1968年运行到2018年。


b7ef9d794604876d830c99681bea3aac.webp


d4e03d8bce0a9dfaec4e0659f7d93ca0.webp2f7b9293bee76621fe0fcac8eea108f8.webp


我们还可以通过下面的红框,调整速度、倒退等操作。


你可以将动画对象保存为视频或gif形式:


e6e6b7fc67bef58178cab0e5d18e90f6.webp


OK,大功告成!赶快一显身手吧!


整个代码不到40行!


cef3bad9ac5c80c4e86a2837defc6c34.webp





获取代码




代码链接:https://pan.baidu.com/s/1MBCCkvEdeboWS2Qkkp59RA  

密码:djxd


浏览 7
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报