查看原文
其他

【R图秀-3】——“全球和平指数”可视化

傅兴 R语言中文社区 2019-04-22


作者简介Introduction

傅兴:个人公众号:Rapp

往期回顾

【R图秀-1】12306列车数据可视化

【R图秀-2】社交网络数据可视化(一)

今天在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数据。代码如下:

2. 接下来是收集人均GDP数据。今天给大家推荐2个十分有用的资源:一个是World Bank开放数据:http://data.worldbank.org ,上面有很多全球的人口和经济数据供大家免费使用。还有一个很给力的R包:WDI,利用这个包可以在R程序中下载所需要的World Bank数据。

我在整合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图秀】中加入交互式的功能,敬请关注!



 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存