1. 首页
  2. 自学中心
  3. 软件
  4. R

数据帮:地图可视化REmap包-remapB函数及实例

原创:金小贝  QQ交流:675229288

remapB( )函数是REmap包核心函数之一,直接调取百度地图,可进行缩放、退拽,可查看全国及省市地图。与remap( )函数一样可实现流向地图及形成地图,还可以绘制车辆线路图。除了使用百度地图为背景层以外,其参数更加灵活,自主个性化更多。
?remapB
remapB(center = c(104.114129,37.550339),
              zoom = 5,
              color = “Bright”,
              title = “”,
              subtitle = “”,
              markLineData = NA,
              markPointData = NA,
              markLineTheme = markLineControl(),
              markPointTheme = markPointControl(),
              geoData = NA)

参数说明:
参数一:center为地图中心,经纬度格式,也可通过基础函数get_city_coord( )生成
参数二:zoom为缩放设置,默认为5,代表全国地图,增大至10可放大至地市
参数三:color为地图颜色,可选有”Bright”, “Blue”, “light”, “dark”, “redalert”, “googlelite”, “grassgreen”, “midnight”, “pink”, “darkgreen”, “bluish”, “grayscale”, “hardedge”
参数四:title为地图主标题
参数五:subtitle为地图副标题
参数六:markLineData为绘制线条需要的数据,包括起点和终点两列
参数七:markPointDate为绘制点需要的数据,仅终点一列
参数八:markLineTheme为线条主题设置,通过markLineControl( )函数设置,具体用法见上篇基础函数部分
参数九:markPointTheme为点主题设置,通过markPointControl( )函数设置,具体用法见上篇基础函数部分
参数十:geoData为点、线绘制的地理位置数据存储,格式同基础函数get_geo_position( ),如果不设置则会自动查找

remapB()     #查看全国地图,默认以(104.114129,37.550339)为中心
remapB(center = get_city_coord(‘承德’), zoom=10)     #查看省市地图,支持中文汉字和拼音

remapB-quanguo

remapB-chengde
更换地图颜色

remapB(center = get_city_coord(‘beijing’),
       zoom=12,
       color = ‘midnight’)      #更换地图颜色样式

remapB-beijing
解读:remapB( )函数可以显示全国、省、市地图,其中省、市地图需要参数zoom设置。地图颜色可选择性很多,可根据不同目的选择合适的展现方式。操作左键双击放大地图,右键双击缩小地图。

实例一:remapB( )函数制作流向地图

destination<- c(‘shanghai’,’guangzhou’,’wulumuqi’,’dalian’,’xian’,
                ‘chengde’,’changchun’,’baotou’,’chongqing’,’zhengzhou’)  #终点
origin<- rep(‘beijing’,length(destination))  #起点
map_data2<- data.frame(origin,destination)  #合成数据框格式的起终点数据
geo_data <- get_geo_position(unique(union(destination,origin)))   #生成所有点的地理信息
map_out2 <- remapB(zoom=5,
                                     color = ‘darkgreen’,
                                     title = ‘remapB( )函数绘制流向地图’,
                                     subtitle = ‘color设置为darkgreen’,
                                     markLineData = map_data2,
                                     markPointData = map_data2[,2],
                                     markLineTheme = markLineControl(),
                                     markPointTheme = markPointControl(),
                                     geoData = geo_data)
plot(map_out2)
结果截图如下:
remapB-darkgreen

解读:remapB( )依然不支持直接输入的中文汉字,如果数据是导入的可以支持中文汉字,所以将来实际应用过程中建议在外部文件中将数据整理好然后再入读到R里。做流向地图时center参数需要略去,即为默认全国地图。如果markPointData不设置或者设置为NA则只有箭头线条,没有终点的圆圈标记。 geoDate参数也可以不设置,此时直接调用百度api去在线调取。

进一步对线条及点进行个性化设置,代码如下:

map_out3 <- remapB(zoom=5,
                   color = ‘Blue’,
                   title = ‘remapB( )函数绘制流向地图’,
                   subtitle = ‘color设置为Blue’,
                   markLineData = map_data2,
                   markPointData = map_data2[,2],
                   markLineTheme = markLineControl(symbol = NA,
                                                                            symbolSize = c(0,4),
                                                                            smooth = T,
                                                                            smoothness = 0.2,
                                                                            effect = T,
                                                                            lineWidth = 2,
                                                                            lineType = ‘dotted’,
                                                                            color = ‘Random’),
                   markPointTheme = markPointControl(symbol = ‘heart’,
                                                                              symbolSize = ‘Random’,
                                                                              effect = T,
                                                                              effectType = ‘scale’,
                                                                              color = ‘Random’),
                   geoData = geo_data)
plot(map_out3)
结果截图如下:remapB-Blue
解读:个性化的设置主要依靠markLineControl( )与markPointControl( )两个函数完成,详细说明见基础函数篇。有一点疑问的是markLineControl( )函数中symbol参数帮助说明对不上,无法改变,设置无效,另外smooth参数T与F没发现区别,如果我理解不到位请联系指正。
图太美,再补一个:
remapB-midnight
参数设置如下:

markLineTheme = markLineControl(symbol = NA,
                                                         symbolSize = c(0,5),
                                                         smooth = T,
                                                         smoothness = 0,
                                                         effect = T,
                                                         lineWidth = 4,
                                                         lineType = ‘dashed’,
                                                         color = ‘yellow’)
markPointTheme = markPointControl(symbol = ‘rectangle’,
                                                           symbolSize = 15,
                                                           effect = T,
                                                           effectType = ‘scale’,
                                                           color = ‘white’)

实例二:remapB( )函数制作线路图
地铁线路反应了车辆行驶轨迹,或者对于现在出行行业的司机\用户行为轨迹图,通过实时打点,记录位置信息,可以可视化车辆行驶轨迹。
line2   #自行整理的北京地图二号线站点及经纬度

        lng      lat  station
1  116.3727 39.94871   积水潭
2  116.3936 39.94898 鼓楼大街
3  116.4083 39.94918   安定门
4  116.4166 39.94842   雍和宫
5  116.4338 39.94140   东直门
6  116.4342 39.93366 东四十条
7  116.4338 39.92461   朝阳门
8  116.4352 39.90861   建国门
9  116.4271 39.90507   北京站
10 116.4186 39.90034   崇文门
11 116.3980 39.90013     前门
12 116.3842 39.90008   和平门
13 116.3743 39.89973   宣武门
14 116.3634 39.89945   长椿街
15 116.3572 39.90724   复兴门
16 116.3562 39.92374   阜成门
17 116.3559 39.93275   车公庄
18 116.3554 39.94030   西直门

19 116.3727 39.94871   积水潭

line2_data <- data.frame(origin=line2[3][-19,],destination=line2[3][-1,])   #生成起终点数据

line2_data

     origin destination
1    积水潭    鼓楼大街
2  鼓楼大街      安定门
3    安定门      雍和宫
4    雍和宫      东直门
5    东直门    东四十条
6  东四十条      朝阳门
7    朝阳门      建国门
8    建国门      北京站
9    北京站      崇文门
10   崇文门        前门
11     前门      和平门
12   和平门      宣武门
13   宣武门      长椿街
14   长椿街      复兴门
15   复兴门      阜成门
16   阜成门      车公庄
17   车公庄      西直门

18   西直门      积水潭
生成线路地图:

map_out4 <- remapB(center = c(116.39277, 39.924674),
                   zoom=14,
                   color = ‘Blue’,
                   title = ‘remapB( )函数绘制线路图’,
                   subtitle = ‘color设置为Blue’,
                   markLineData = line2_data,
                   markPointData = line2_data[,2],
                   markLineTheme = markLineControl(symbol = NA,
                                                   symbolSize = c(0,0),
                                                   smooth = T,
                                                   smoothness = 0,
                                                   effect = T,
                                                   lineWidth = 2,
                                                   lineType = ‘dotted’,
                                                   color = ‘Random’),
                   markPointTheme = markPointControl(symbol = ‘droplet’,
                                                     symbolSize = 10,
                                                     effect = T,
                                                     effectType = ‘scale’,
                                                     color = ‘Random’),
                   geoData = line2)

plot(map_out4)  

结果截图如下:
remapB-line2
解读:设置与之前大体一样,注意center此时需要设置到某一点,配合zoom展示需要的地图位置与大小。很多依赖地图的业务后台日志详细记录了车辆\用户\司机的形式打点位置数据,可以生成可视化线路图。

实例三:remapB( )函数绘制业务分布地图
业务分布地图只用位置点来实现,业务分布地图一方面反映业务发生地点分布与业务量的多少,另一方面也可以与同期对比,进行热力图变化对比,反映出业务地理位置上的变化。以下是某出行行业业务数据,样例数据data格式如下,实际数据可根据自己业务进行整理:

    lng      lat  id
116.4348 39.94538 208
116.3448 39.97794 199
116.6521 39.93277 210
116.6206 39.99084 202
116.2612 39.91326 188
116.5236 39.89392 196

样例代码如下:

map_out5 <- remapB(center = c(116.39277, 39.924674),
                zoom = 12,
                color = ‘Blue’,
                title = ‘北京2016年业务分布图’,
                markPointData = data[3],
                markPointTheme = markPointControl(symbol = ‘pin’,
                                                  symbolSize = 3,
                                                  effect = T,
                                                  color = ‘yellow’),
                geoData = data )

plot(map_out5) 

结果截图如下:

remapB-2015

remapB-2016解读:业务分布图通过设置markPointData与markLineTheme参数实现,markLineData与markLineTheme不进行设置即可 。由上图显示在2015年基础上2016年业务明显发展,点分布密度明显增加多点开花。如果同时将Line参数进行设置,则可以将点、线图合并到同一张图中,即实例二与实例三的合并,分别设置点、线的参数即可,唯一注意的是geoData需要做一个行合并(rbind),有兴趣的可自行操作。

查看更多核心函数及操作实例见下篇“ 数据帮:地图可视化REmap包-remapC函数及实例”。

 

原创文章,作者:金小贝,如若转载,请注明出处:http://www.17bigdata.com/%e6%95%b0%e6%8d%ae%e5%b8%ae%ef%bc%9a%e5%9c%b0%e5%9b%be%e5%8f%af%e8%a7%86%e5%8c%96remap%e5%8c%85-remapb%e5%87%bd%e6%95%b0%e5%8f%8a%e5%ae%9e%e4%be%8b/

联系我们

在线咨询:点击这里给我发消息

邮件:23683716@qq.com

跳至工具栏