ITPub博客

首页 > > > R语言可视化——案例综合运用

R语言可视化——案例综合运用

作者:浪花小雨滴 时间:2020-06-16 15:20:40 0 删除 编辑

今天跟大家介绍一个REmap包的新函数——REmapB。

它是REmap包中诸多组函数中的一位,功能上要强大于之前介绍的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为地图中心,经纬度格式;
参数二: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(‘地点’)获取
其中以上参数中,markLineTheme和markLineTheme内含有诸

多属性设置,类似REmap中的theme设置:

markLineTheme = markLineControl(symbol = NA,#控制线型
symbolSize = c(0,4),    #线条粗度变动范围
smooth = T,             #启用线条平滑度设置
smoothness =0.2,        #线条平滑度
effect = T,             #线条动效
lineWidth = 2,          #线宽
lineType = ‘dotted’,  #线条类别
color =‘Random’)      #线条颜色
参数说明:
参数一:symbol为标记样式,具体指线条两端的标记的形状,两个值分别为起点和终点,经过实际使用symbol参数不可修改
参数二:symbolSize为线条两端标记大小,对应symbol参数的两个值,实际上第一个值没用,因为开始标记为none
参数三:smooth为逻辑参数,设置线条是否平滑
参数四:smoothness为平滑度,smooth参数设置为T时有效,体现线条的弧度,减小到0时为直线
参数五:effect为逻辑参数,是否显示动态效果
参数六:lineWidth为线条粗细
参数七:lineType为线条类型,可选有solid(实线)、dotted(点线)、dashed(虚线)
参数八:color为线条颜色

根据以上参数名称,可以大致了解每一个参数的含义:

markPointTheme = markPointControl(symbol = "heart", #点形状
symbolSize = "Random",   #点大小
effect = T,              #动效启用
effectType = "scale",    #动效类型
color = "Random")        #颜色

参数说明:

参数一:symbol为点样式,可选项none、circle、rectangle、triangle、diamond、emptyCirle、emptyRectangle、emptyTriangle、emptyDiamond、heart、droplet、pin、arrow、star
参数二:symbolSize为点大小
参数三:effect为逻辑参数,是否显示动态效果
参数四:effectType为动态效果样式,可选scale(放大)和bounce(跳动)
参数五:color为点颜色

解读:effect参数在点太多时,动态效果会失效,这时建议设置为FALSE。在remapB( )函数中通过另外一个参数markPointData也可以设置点颜色,优先级高于color参数。

接下来我们可以根据以上参数说明制作一个一对多的流向图:

今天跟大家介绍一个REmap包的新函数——REmapB。

它是REmap包中诸多组函数中的一位,功能上要强大于之前介绍的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为地图中心,经纬度格式;
参数二: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(‘地点’)获取

其中以上参数中,markLineTheme和markLineTheme内含有诸多属性设置,类似REmap中的theme设置:

markLineTheme = markLineControl(symbol = NA,#控制线型
symbolSize = c(0,4),    #线条粗度变动范围
smooth = T,             #启用线条平滑度设置
smoothness =0.2,        #线条平滑度
effect = T,             #线条动效
lineWidth = 2,          #线宽
lineType = ‘dotted’,  #线条类别
color =‘Random’)      #线条颜色

参数说明:

参数一:symbol为标记样式,具体指线条两端的标记的形状,两个值分别为起点和终点,经过实际使用symbol参数不可修改
参数二:symbolSize为线条两端标记大小,对应symbol参数的两个值,实际上第一个值没用,因为开始标记为none
参数三:smooth为逻辑参数,设置线条是否平滑
参数四:smoothness为平滑度,smooth参数设置为T时有效,体现线条的弧度,减小到0时为直线
参数五:effect为逻辑参数,是否显示动态效果
参数六:lineWidth为线条粗细
参数七:lineType为线条类型,可选有solid(实线)、dotted(点线)、dashed(虚线)
参数八:color为线条颜色

根据以上参数名称,可以大致了解每一个参数的含义:

markPointTheme = markPointControl(symbol = "heart", #点形状
symbolSize = "Random",   #点大小
effect = T,              #动效启用
effectType = "scale",    #动效类型
color = "Random")        #颜色

参数说明:

参数一:symbol为点样式,可选项none、circle、rectangle、triangle、diamond、emptyCirle、emptyRectangle、emptyTriangle、emptyDiamond、heart、droplet、pin、arrow、star
参数二:symbolSize为点大小
参数三:effect为逻辑参数,是否显示动态效果
参数四:effectType为动态效果样式,可选scale(放大)和bounce(跳动)
参数五:color为点颜色
解读:effect参数在点太多时,动态效果会失效,这时建议设置为FALSE。在remapB( )函数中通过另外一个参数markPointData也可以设置点颜色,优先级高于color参数。

接下来我们可以根据以上参数说明制作一个一对多的流向图:

通过设置markLineTheme、markPointTheme两个主题内部的详细风格参数,你可以对线条以及数据点的气泡进行个性化设置。

map_out1<-remapB(zoom=5, 
                 color="dark",
                 title="我是主标题",
                 subtitle="我是副标题",
                 markLineData=map_data,
                 markPointData=destination,                
                 markLineTheme = markLineControl(
                 symbol = NA,            
                 symbolSize = c(0,4),   
                 smooth = T,             
                 smoothness =0.2,      
                 effect = T,            
                 lineWidth = 2,         
                 lineType ="dotted",  
                 color ="white"),
                 markPointTheme = markPointControl(
                 symbol = "heart", 
                 symbolSize = "Random",  
                 effect = T,              
                 effectType = "scale",   
                 color = "white") 
                 )
plot(map_out1)

如果只想要绘制流向线而不需要终点的点的话,直接给markPointData赋值为NA就可以了。

只要将我们的数据结构重新整理,就可以制作出路径地图:

newdata<- c("shanghai","guangzhou","chengdu","xian","taiyuan","济南","shanghai") 
origin<-c(newdata[-7])
destination<-c(newdata[-1])
map_data<- data.frame(origin,destination)
map_out2<-remapB(zoom=5, 
                 color="dark",
                 title="我是主标题",
                 subtitle="我是副标题",
                 markLineData=map_data,
                 markPointData=destination,                
                 markLineTheme = markLineControl(
                 symbol = NA,            
                 symbolSize = c(0,4),   
                 smooth = T,             
                 smoothness =0.2,      
                 effect = T,            
                 lineWidth = 2,         
                 lineType ="dotted",  
                 color ="white"),
                 markPointTheme = markPointControl(
                 symbol = "heart", 
                 symbolSize = "Random",  
                 effect = T,              
                 effectType = "scale",   
                 color = "white") 
                 )
plot(map_out2)

最后一个案例使用REmapB函数制作目标分布图:

首先搜索大连地区的大学:

加载百度地图包:
library("baidumap")
#查找大连的所有大学
dl_college <- getPlace("大学","大连")
Get 125 records, 7 page. 
    Getting  0 th page 
    Getting  1 th page 
    Getting  2 th page 
    Getting  3 th page 
    Getting  4 th page 
    Getting  5 th page 
    Getting  6 th page 
Done! 
head(dl_college)
                       name                                           address      lat      lon
1               大连工业大学                                         轻工苑1号 38.97890 121.5332
2               大连理工大学                     辽宁省大连市甘井子区凌工路2号 38.88868 121.5362
3               大连海事大学                             辽宁省大连市凌海路1号 38.87753 121.5387
4 大连交通大学(沙河口校区) 沙河口区黄河路794号交通大学小吃一条街内(近西南路) 38.91790 121.5770
5   大连外国语大学(旅顺校区)                   中国辽宁省大连市旅顺南路西段6号 38.81853 121.3154
6                   大连大学                                      学府大街10号 39.10660 121.8282
       telephone
1 (0411)86323693
2           <NA>
3           <NA>
4 (0411)84106313
5 (0411)86111157
6 (0411)87402114
str(dl_college)
'data.frame':	125 obs. of  5 variables:
 $ name     : chr  "大连工业大学" "大连理工大学" "大连海事大学" "大连交通大学(沙河口校区)" ...
 $ address  : chr  "轻工苑1号" "辽宁省大连市甘井子区凌工路2号" "辽宁省大连市凌海路1号" "沙河口区黄河路794号交通大学小吃一条街内(近西南路)" ...
 $ lat      : num  39 38.9 38.9 38.9 38.8 ...
 $ lon      : num  122 122 122 122 121 ...
 $ telephone: chr  "(0411)86323693" NA NA "(0411)84106313" ...

一共抓取了大连地区的125个带有大学的机构经纬度地址:

构造作图数据:

newdata1<-dl_college[,c(3,4,1)]
head(newdata1)
                        name      lat      lon
1               大连工业大学 38.97890 121.5332
2               大连理工大学 38.88868 121.5362
3               大连海事大学 38.87753 121.5387
4 大连交通大学(沙河口校区) 38.91790 121.5770
5   大连外国语大学(旅顺校区) 38.81853 121.3154
6                   大连大学 39.10660 121.8282
newdata2<-newdata1[,c(2,1,3)]
map_out3 <- remapB(center = c(121.62139,38.91934),  
                zoom = 14,
                color = "Blue",
                title = "大连高校分布图",
                markPointData =newdata2[3],
                markPointTheme = markPointControl(
                symbol = "pin",
                symbolSize = 3,
                effect = T,
                color = "yellow"),
                geoData =newdata2 
               )
plot(map_out3) 

如果想要存储该HTML对象,需要设定临时目录:

setwd("D:/R/Rscript")      #保存图片的位置,不做修改默认为R的工作路径
options(remap.js.web=T)    #动态网页图保存命令
plot(map_out3)             #保存的同时自动调用浏览器窗口

联系方式:

wechat:ljty1991
Mail:578708965@qq.com
个人公众号:数据小魔方(datamofang)
团队公众号:EasyCharts
qq交流群:[魔方学院]553270834

github:ljtyduyu (RainDu)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3123126/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40229