美文网首页
【R图秀-10】”全球和平指数“可视化(一)

【R图秀-10】”全球和平指数“可视化(一)

作者: Rapp | 来源:发表于2016-10-08 22:37 被阅读175次

今天在Tableau Public的网站上看到一个很有意思的可视化作品。(注:Tableau是一个商业版的数据可视化工具)
https://public.tableau.com/en-us/s/gallery/does-affluence-peace-and-stability

webpage.png
作者用了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数据。代码如下:

    code1.png
  2. 接下来是收集人均GDP数据。今天给大家推荐2个十分有用的资源:一个是World Bank开放数据:http://data.worldbank.org ,上面有很多全球的人口和经济数据供大家免费使用。还有一个很给力的R包:WDI,利用这个包可以在R程序中下载所需要的World Bank数据。
    我在整合GPI和GDP数据的时候发现,一个国家的名称在不同的数据源中可能有不同的形式,所以还需要做一些手工检查,避免因为国家名称不匹配而遗漏数据。代码如下:

    code2.png
  3. GDP数据预处理。首先下载每个国家2011年到2015年的人均GDP数据,然后计算每个国家5年的平均值,最后把GDP按照从高到低分成3档(top third, middle third, bottom third),每档各占1/3。代码如下:


    code3.png
  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


    figure0.png

    代码如下:


    code4.png
    为了让大家看清楚图上的细节,我将上面的图截取了几个部分。
    局部图1:
    figure1.png
    从图上可以看到很多这几年爆发战争甚至分裂的国家,尤其是叙利亚(Syrian)、乌克兰(Ukraine)和利比亚(Libya)三国,GPI一度比中国还低,也算中等富裕国家(叙利亚的GDP数据缺失)但是由于战争等原因迅速沦为动荡国家
    局部图2:
    figure2.png
    从这个图上我们看到格鲁吉亚(Georgia)的GPI跨度很大,这让人回想起2008年格鲁吉亚与俄罗斯之间爆发的南奥塞梯战争。
    局部图3:
    figure3.png

    虽然发达富裕的国家不一定更加peaceful,但是GPI最低的国家绝大部分都是富裕国家,也有少数例外,比如不丹(Bhutan)。不丹经济相对落后,但却被评为世界幸福指数最高的国家之一。

本期的【R图秀】只是实现了”全球和平指数“的静态可视化,我将在下一期的【R图秀】中加入交互式的功能,敬请关注!

qrcode.jpg

相关文章

网友评论

      本文标题:【R图秀-10】”全球和平指数“可视化(一)

      本文链接:https://www.haomeiwen.com/subject/qliuyttx.html