【R图秀-6】地震来了

浏览: 1757

傅兴:个人公众号:Rapp

往期回顾

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

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

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

【R图秀】情人节快乐!

【R图秀-5】将薪比薪


前几天在网上发现了一个有趣的公共数据源:USGS Earthquake Hazards Program ( http://earthquake.usgs.gov/ ) 这个网站收录了全球范围内的地震数据,包括地震发生的时间、经纬度和震级等信息。

image.png

我们不仅可以通过网页搜索并下载所需的数据,还可以利用网站提供的API,将参数传递给URL从而利用程序自动获取数据。本文采用的是第二种方法。

image.png

这个数据非常适合我们练习地图数据的可视化,今天我们就一起来用R语言制作几个炫酷的全球地震数据分布图。

R图秀曾经展示过静态地图的制作方法,今天我们要从2个方面挑战更高的难度:
1. 动态数据,随着时间变化,改变地图上的数据点
2. 动态地图,画一个旋转的地球,360度展示地图上的数据点

我们选用的工具是mapmate ( https://leonawicz.github.io/mapmate/index.html )

image.png

mapmate = map animate,是专门用来做地图动画的R软件包。它的原理是首先生成一系列图像文件(每一个文件对应一帧),然后利用ffmpeg软件将所有文件整合在一起生成一个GIF动画。

因此,我们在安装完mapmate包后,还要看看自己的系统里面有没有ffmpeg,如果没有,可以在Linux终端中输入下面的命令:

sudo apt-get install ffmpeg

接下来我们就一步步地制作我们的动画短片(如果在阅读中遇到问题,建议首先阅读mapmate的官方文档):
1. 加载所需要的软件包

image.png

2. 下载近一个月内,震级大于2.5的地震数据,只保留经(lon)纬(lat)度和震级(mag)

image.png

3. 将地震数据制作成一个大的list,list中的每个dataframe对应一帧(我们要360度展示,所以制作了360帧),注意要给每个dataframe添加frameID,frameID就表示该dataframe是来自哪一帧。

mapmate包中自带了2个很有用的数据集。一个是bathymetry(海洋深度数据),另一个是borders(国境线)。和地震数据类似,我们也把它们制作成360帧。

image.png

4. save_map函数是mapmate的核心,我们可以先画第一帧数据(代码中加注释的部分),看看效果如何:
海洋深度:

image.png

国境线:

地震点:

image.png

如果没有问题,我们就继续制作剩下的359帧。为了加快速度,我用了mclapply函数,利用32个CPU同时计算:

image.png

5. save_map生成的是背景透明的png文件,我们可以把bath,border和earthquake图像作为3个图层merge在一起。这里用的是ImageMagick软件的convert工具。

image.png

merge后的效果:

最后用ffmpeg将所有图像制作成一个gif文件。
代码如下:

image.png

6. 除了地球模式,mapmate还可以制作平面地图,我们可以将上面的代码稍作修改:

image.png

image.png

这里的目的是让第一帧只有一个点,第2帧有2个点,以此类推,大家可以想象一下出来的效果是怎样的。


7. 我还不满足得到的gif动画,接下来我利用一些音频和视频编辑软件,制作了一个名为《Eearthquake》的视频短片,供大家欣赏。https://v.qq.com/x/page/i0377gidh77.html 


往期精彩内容整理合集 

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

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

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


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

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

推荐 0
本文由 R语言中文社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册