分享

Python让图表奔跑起来,Matplotlib的神奇用处

 静幻堂 2019-12-20
2019-12-18 21:38:16

越来越多的公司开始使用Python进行数据处理。其中,对处理过的数据进行图表生成则变得必不可少。一般来说,生成的图表都是静态的。最多也就是通过图表颜色的变化使其好看一点。但是,如果让图表自己动起来,比如说:奔跑起来,是不是立马可以吸引你的目光呢。

  Bar Chart Races (条形图比赛)最近悄然流行起来。‘条形图比赛’这种形式最早出现在Matt Navarra的tweet上,浏览次数超过1000万次。随后,Flourish Studio发布了Race Chart,一款快速制作条形图比赛的傻瓜式工具。

  那么,会python的你能不能自己实现‘条形图比赛’呢?答案自然是:可以。

  Python让图表奔跑起来,Matplotlib的神奇用处

  跟着我一起来完成第一个‘Bar Chart Races’吧!

  数据准备

  2018年,世界城市人口最多的10大城市有哪些呢?那2017呢?

  这次,就一起来做一个世界城市人口最多的10大城市的编年史吧。

  使用python处理数据以及绘图自然少不了Pandas和matplotlib这两把利器。先导入一些我们会用到的python包。

  Python让图表奔跑起来,Matplotlib的神奇用处

  接下来,导入世界城市人口数据。

  Python让图表奔跑起来,Matplotlib的神奇用处

  总共有6252条数据。通过观察,我们只需要name、group、year和value这四列数据即可。

  Python让图表奔跑起来,Matplotlib的神奇用处

  通过iloc方法,我们截取前四列数据。1500年,北京的人口67.2万。

  而2018年世界上人口数最多的城市又有哪些呢?

  Python让图表奔跑起来,Matplotlib的神奇用处

  2018年人口最多的城市是东京,3819.4万。上海和北京分别为2577.8和2267.4万。数据永远没有图表来的直观。一起先来做一个2018年城市人口Top10的柱状图吧!

  Python让图表奔跑起来,Matplotlib的神奇用处

  当然,光是这样真的很土。一张好的图表,一定要色彩鲜明,信息传达清晰。因此,我们需要对图表的字体、颜色,坐标轴样式、坐标标签等等进行处理。

  图表美化

  Python让图表奔跑起来,Matplotlib的神奇用处

  通过对整个数据group列的处理,城市来自于六大板块。那么,我们可以给六大板块不同的配色,之后的板块城市继承该配色。

  Python让图表奔跑起来,Matplotlib的神奇用处

  同时,我们将城市与对应板块进行配对。

  Python让图表奔跑起来,Matplotlib的神奇用处

  通过ax.text()函数,我们可以对图表内每一个柱状图城市名、对应板块名和人口数进行位置上的调整,调整后效果如下。

  Python让图表奔跑起来,Matplotlib的神奇用处

  为了色彩的多样性,我们将各个板块的颜色添加进去,并且增加标题和坐标轴的变化。

  Python让图表奔跑起来,Matplotlib的神奇用处

  Python让图表奔跑起来,Matplotlib的神奇用处

  Bar chart races制作

  由于数据是以年为基础的,我们将上述代码封装成函数 bar_chart_race,参数为年-year。

  Python让图表奔跑起来,Matplotlib的神奇用处

  有了函数 bar_chart_race,就可以轻松的做出每年的柱状图了。

  Python的绘图包matplotlib中自带了很多动态的变化-matplotlib.animation。其中,FuncAnimation可以通过循环调用绘图函数进行图像的更新。下面就是见证奇迹的时刻了。

  Python让图表奔跑起来,Matplotlib的神奇用处

  将bar_chart_race函数作为参数放入animation.FuncAnimation中,就可以制成从1500年到2018年世界人口Top10城市变化图了。

  总结

  Matplotlib是一个很值得认真学习库。希望你能从这篇文章中学到数据处理以及动态作图的知识。

  下面就欣赏一下我们做的动态图吧!

  代码如下:animator.save('animation.gif', writer='pillow', fps=60)

  Python让图表奔跑起来,Matplotlib的神奇用处

以上便是小编给大家带来的全部内容,转发此文+关注 并私信小编“资料”即可免费领取2019最新python资料和零基础入门教程!以上便是小编给大家带来的全部内容,转发此文+关注 并私信小编“资料”即可免费领取2019最新python资料和零基础入门教程!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多