这周的六天时间,去了祖国的内蒙古,体验了草原的辽阔,人民的好客,精准扶贫开发的进展。由于报了个以大巴车为主要交通工具的团,行程两千公里以上,跨越半个中国,我突发奇想觉得画个路线图是一个多么好玩的事,于是,我一路上用地图记录经过和几个大的地点,决定使用R语言来画个图看看。
一、找到轮子
说干就干,百度了许多包,有ggmap2(下载中国地图参数需要翻,有点无语),map(没找到几个介绍的文章)等,终于REmap出现在了我的面前。
REmap是一个基于Echarts http://echarts.baidu.com 的一个R包.主要的目的是为广大数据玩家提供一个简便的,可交互的地图数据可视化工具.目前托管在github, https://github.com/lchiffon/REmap
http://langdawei.com/REmap/2015/06/remap5
虽然最近百度口碑很烂,但是不得不说echarts是百度很大的成就,为绘图提供了好多轮子。这个包刚好满足我需要画箭头来指示路线,对中文的支持度好。先把图片放在这,其实这是一个网页内交互性的图,需要用浏览器打开,我把地址放在这里,需要用电脑打开,允许不安全的脚本才能看到,因为对这个包还只是初学,于是就先这样了。用鼠标悬浮在各个点和线上可以看到我的旅行路线。原文链接也放了,好像只是空白,应该是自带浏览器不支持脚本运行。
https://shiny.zd200572.com/Rtmpl9z4HS/ID_20190728010702_3110.html
二、学学代码
代码就挺简单了,基本上就是修改了下demo里的地点和标题。参考这篇博客,理明白了如何设置多个起点。就是把每个起点放在一个向量,把终点放在另外一个,首尾相接就行了。
https://blog.csdn.net/wzgl__wh/article/details/66472925
install.packages("devtools") #先安装devtools
library(devtools) #加载
install_github('lchiffon/REmap')#使用devtools安装REmap
library(REmap)#加载
#建立起点和终点两个向量
origin<-c("南京","太原","呼和浩特", "包头","鄂尔多斯","呼和浩特","太原","济南")
destination<-c("太原","呼和浩特", "包头","鄂尔多斯","呼和浩特","太原","济南","南京")
#将上面这两列数据存储在一个数据框里面
dat = data.frame(origin,destination)
out = remap(dat,title = "旅行路线图",subtitle = "theme:none")
#下面两个是标点和线的配置,可是设置一番没有发现区别
markLineControl(symbolSize = c(2,4),
smoothness = 0.2,
effect = F,
lineWidth = 1,
lineType = 'solid',
color = "Random")
markPointControl(symbol = 'emptyCircle',
symbolSize = "Random",
effect = F,
effectType = 'scale',
color = "Random")
#标点和线,鼠标悬浮可见
remapB(center=c(104.114129,37.550339),title = "旅行路线图",
color = "Blue",
markLineData = dat,
markPointData = dat[,2],
markLineTheme =markLineControl(),
markPointTheme = markPointControl())