【R图秀-3】——“全球和平指数”可视化
傅兴:个人公众号:Rapp
往期回顾
今天在Tableau Public的网站上看到一个很有意思的可视化作品。(注:Tableau是一个商业版的数据可视化工具)
https://public.tableau.com/en-us/s/gallery/does-affluence-peace-and-stability
作者用了2种数据:人均GDP和全球和平指数(Global Peace Index)来回答这样一个问题:国家的富裕程度是否和它的和平稳定程度相关?我的直觉告诉我,这两者之间肯定有很强的正相关性。这个作品的内容比较新颖,表达方式也很丰富:通过点、线、矩形、颜色、大小等多种图形属性展示了丰富的多维数据,而且做成了可以交互的形式(通过下拉菜单可以选择国家),是一个非常优秀的可视化作品,值得大家学习。
今天的【R图秀】就教大家如何用R来实现”全球和平指数“的可视化。
1. 首先,我们要收集GPI的数据。在wikipedia上可以找到介绍GPI的网页https://en.wikipedia.org/wiki/Global_Peace_Index ,该网页列出了160多个国家从2008到2016年的GPI数据。我们要做的就是用rvest包来抓取这个网页中的GPI数据。代码如下:
我在整合GPI和GDP数据的时候发现,一个国家的名称在不同的数据源中可能有不同的形式,所以还需要做一些手工检查,避免因为国家名称不匹配而遗漏数据。代码如下:
3. GDP数据预处理。首先下载每个国家2011年到2015年的人均GDP数据,然后计算每个国家5年的平均值,最后把GDP按照从高到低分成3档(top third, middle third, bottom third),每档各占1/3。代码如下:
4. 参考Tableau Public上的作品进行数据可视化。要看懂这个图需要了解以下几点:
(1) GPI越小的国家越和平稳定,GPI越大的国家越动荡
(2)每个国家有9个点,分别代表2008到2016年的GPI(个别国家有缺失值,所以少于9个点),点的大小表示年份(年份越大点越大)
(3)人均GDP从高到低分为3档,分别用绿色(富裕)、蓝色(中等)和红色(贫困)表示
(4)每个国家的9个点都落在一个矩形内,从矩形的长短可以看出GPI在9年内的变化程度,变化越大,说明该国在近几年发生了剧烈的动荡(爆发战争或政治危机)
(5)拿中国的GPI作为参照,在最大和最小值的地方做了2条垂直的虚线,可以很容易的将中国的GPI与其他国家做比较
(6)所有国家按照2016年的GPI进行排序,黑色曲线表示的是2016年的GPI
代码如下:
为了让大家看清楚图上的细节,我将上面的图截取了几个部分。
局部图1:
从图上可以看到很多这几年爆发战争甚至分裂的国家,尤其是叙利亚(Syrian)、乌克兰(Ukraine)和利比亚(Libya)三国,GPI一度比中国还低,也算中等富裕国家(叙利亚的GDP数据缺失)但是由于战争等原因迅速沦为动荡国家
局部图2:
从这个图上我们看到格鲁吉亚(Georgia)的GPI跨度很大,这让人回想起2008年格鲁吉亚与俄罗斯之间爆发的南奥塞梯战争。
局部图3:
虽然发达富裕的国家不一定更加peaceful,但是GPI最低的国家绝大部分都是富裕国家,也有少数例外,比如不丹(Bhutan)。不丹经济相对落后,但却被评为世界幸福指数最高的国家之一。
本期的【R图秀】只是实现了”全球和平指数“的静态可视化,我将在下一期的【R图秀】中加入交互式的功能,敬请关注!
公众号后台回复关键字即可学习
回复 R R语言快速入门及数据挖掘
回复 Kaggle案例 Kaggle十大案例精讲(连载中)
回复 文本挖掘 手把手教你做文本挖掘
回复 可视化 R语言可视化在商务场景中的应用
回复 大数据 大数据系列免费视频教程
回复 量化投资 张丹教你如何用R语言量化投资
回复 用户画像 京东大数据,揭秘用户画像
回复 数据挖掘 常用数据挖掘算法原理解释与应用
回复 机器学习 人工智能系列之机器学习与实践
回复 爬虫 R语言爬虫实战案例分享