越来越多的公司开始使用Python进行数据处理。其中,对处理过的数据进行图表生成则变得必不可少。一般来说,生成的图表都是静态的。最多也就是通过图表颜色的变化使其好看一点。但是,如果让图表自己动起来,比如说:奔跑起来,是不是立马可以吸引你的目光呢。
Bar Chart Races (条形图比赛)最近悄然流行起来。‘条形图比赛’这种形式最早出现在Matt Navarra的tweet上,浏览次数超过1000万次。随后,Flourish Studio发布了Race Chart,一款快速制作条形图比赛的傻瓜式工具。
那么,会python的你能不能自己实现‘条形图比赛’呢?答案自然是:可以。
跟着我一起来完成第一个‘Bar Chart Races’吧!
数据准备
2018年,世界城市人口最多的10大城市有哪些呢?那2017呢?
这次,就一起来做一个世界城市人口最多的10大城市的编年史吧。
使用python处理数据以及绘图自然少不了Pandas和matplotlib这两把利器。先导入一些我们会用到的python包。
接下来,导入世界城市人口数据。
总共有6252条数据。通过观察,我们只需要name、group、year和value这四列数据即可。
通过iloc方法,我们截取前四列数据。1500年,北京的人口67.2万。
而2018年世界上人口数最多的城市又有哪些呢?
2018年人口最多的城市是东京,3819.4万。上海和北京分别为2577.8和2267.4万。数据永远没有图表来的直观。一起先来做一个2018年城市人口Top10的柱状图吧!
当然,光是这样真的很土。一张好的图表,一定要色彩鲜明,信息传达清晰。因此,我们需要对图表的字体、颜色,坐标轴样式、坐标标签等等进行处理。
图表美化
通过对整个数据group列的处理,城市来自于六大板块。那么,我们可以给六大板块不同的配色,之后的板块城市继承该配色。
同时,我们将城市与对应板块进行配对。
通过ax.text()函数,我们可以对图表内每一个柱状图城市名、对应板块名和人口数进行位置上的调整,调整后效果如下。
为了色彩的多样性,我们将各个板块的颜色添加进去,并且增加标题和坐标轴的变化。
Bar chart races制作
由于数据是以年为基础的,我们将上述代码封装成函数 bar_chart_race,参数为年-year。
有了函数 bar_chart_race,就可以轻松的做出每年的柱状图了。
Python的绘图包matplotlib中自带了很多动态的变化-matplotlib.animation。其中,FuncAnimation可以通过循环调用绘图函数进行图像的更新。下面就是见证奇迹的时刻了。
将bar_chart_race函数作为参数放入animation.FuncAnimation中,就可以制成从1500年到2018年世界人口Top10城市变化图了。
总结
Matplotlib是一个很值得认真学习库。希望你能从这篇文章中学到数据处理以及动态作图的知识。
下面就欣赏一下我们做的动态图吧!
代码如下:animator.save('animation.gif', writer='pillow', fps=60)
以上便是小编给大家带来的全部内容,转发此文+关注 并私信小编“资料”即可免费领取2019最新python资料和零基础入门教程!以上便是小编给大家带来的全部内容,转发此文+关注 并私信小编“资料”即可免费领取2019最新python资料和零基础入门教程!
联系客服