听说你想画地图

听说你想画地图?

        做流行病学调查或者研究细菌、病毒传播路径时通常会用地图可视化其不同地区的严重程度或传播途径。对于不少非生物信息背景的同学来说,使用PS或者AI是最好的方式。但是,不是所有人都能熟练使用PS或者AI。另外,即使能熟练使用PS或者AI,当要可视化很复杂的病毒传播途径或者某些地区病毒感染严重程度时PS或AI也显得非常鸡肋了。
          所以这里不得不提到通过编程的方式画地图,R语言里面有几个函数包都可以画地图,例如maptools等,但是这些函数包需要自己下载地图数据或者翻墙,也显得非常麻烦。最近我参加的课题中也涉及到了地图可视化,我偶然发现了一个简单的通过编程可视化地图的R语言函数包——REmap,这是百度地图开发的函数包,非常友好!

REmap地图可视化

安装REmap

        由于该程序包发布在github上,不能直接通过install.package函数安装,需要先安装devtools函数包,再用该函数包安装REmap

install.packages('devtools')
devtools::install_github(‘lchiffon/REmap’) 

函数包介绍

        REmap函数包中主要有remap、remapB、remapC、remapH四个可视化地图的函数。通常情况下remap、remapB用于画迁徙图,应用在生物学领域则可以画病毒、细菌的传播图、候鸟迁徙图等。由于百度地图的局限性这两个函数不能画世界范围内的迁徙图。remapC主要画地图热图,但是remapC函数中有markLinedata参数可以嵌套迁徙图,而且这个函数可以画世界地图,所以如果单纯想画某个病毒在世界范围的传播可以用这个函数。而remapH函数主要是画地图热力图,通常情况下气象类专业经常画热力图。当然生物学领域如病毒在某些地区的严重情况也可以用这个函数画。

remap函数画传播图

        由于该函数只能画国内的传播情况,所以我们假设某个病毒在中国的上海爆发,迅速从上海传播到广州、北京、武汉、成都、哈尔滨,另外传播到北京的病毒继续传播到兰州、沈阳、大连,传播到广州的病毒继续传播到长沙、长春、郑州。
        先创建一个叫Map的txt文件里面输入传播源地址和传播至地址

听说你想画地图

可视化代码如下

library(REmap)
Map<-read.table("Map.txt")
Map<-data.frame(Map)
remap(Map,title = "Virus breakout in China",
         subtitle="Report",theme=get_theme("Dark",lineColor = "red",
                                           backgroundColor = "Bright"))

        最后输出的是一个.html文件,该文件自动连接百度地图软件的实时地图信息,所以查看该图片需要联网,最后可以将图片保存。

听说你想画地图

remapC函数可视化地图

        我们继续假设,由于该病毒的传播速度及其快,很快从中国传播到了全世界。假设从中国传到了俄罗斯、美国、日本、加拿大、英国、肯尼亚、巴西,传到俄罗斯的病毒又传播到芬兰、印度、澳大利亚,传到美国的病毒传到了韩国、南非、意大利。那么首先需要建立同样的传播路径的txt文本。

        由于remapC函数的输入主数据需要由世界各国组成的数据框,我们需要构建一个一列为世界各国名字,一列为数值的数据框。数值统一设为1(因为这里只画病毒传播图,不画病毒严重程度)所以通过以下代码进行传播可视化,输入的主数据为数据框数据,传播路径的文本数据以markLinedata副数据读入

可视化代码如下

library(REmap)
Map<-read.table("Map.txt",sep = "\t")
worlddata<-data.frame(mapNames("world"),value=rep(1,length(mapNames("world"))))
remapC(worlddata,maptype = "world",markLineData = Map,
       markPointData = Map,theme = get_theme("Dark",lineColor = "Random"),
       title = "Virus spread from China",subtitle = "BBC REPORT")

输出结果后我发现美国、加拿大等国家的传播路径没有。

        我感到奇怪。查看了源码后发现这个函数包暂时存在不足,无法得到美国、加拿大、欧洲等国家的信息。所以传播路线暂时不能可视化这些国家。不过代码上是没有问题的,这个函数包的作者也在不断完善中,希望未来更好。

        我们继续假设,如果这个病毒是感染人的病毒,而且对人有智力摧残的功能,假设根据报道感染国家的严重程度如下

可视化结果如下

可视化代码如下

library(REmap)
Map<-read.table("Map.txt",sep = "\t")
remapC(Map,maptype = "world",color = "red"
       ,theme = get_theme("Dark",lineColor = "Random"),
       title = "Virus spread from China",subtitle = "BBC REPORT")

注意事项

        总体来说,REmap是地图可视化非常友好的程序包,虽然目前不能获得全世界数据,但是作者也在不断更新。另外这个包还支持画城市地图、局部区域地图。只要百度地图上能搜到的都可以画。

听说你想画地图》来自互联网公开内容,收录仅供学习使用,如侵权请联系删除。本文URL:https://www.ezixuan.com/1021658.html

(0)
上一篇 2023年 2月 6日 上午9:18
下一篇 2023年 2月 6日 上午9:18