R语言可视化——REmapB函数
今天跟大家介绍一个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参数。
接下来我们可以根据以上参数说明制作一个一对多的流向图:
destination<- c("shanghai","guangzhou","济南","dalian","xian","chengdu","changchun","taiyuan","nanyang","zhengzhou") #终点
origin<- rep("nanyang",length(destination)) #起点
map_data<- data.frame(origin,destination) #合成数据框格式的作图数据
map_out<-remapB(zoom=5, #参数5绘制省级国家地图
color="dark",
title="我是主标题",
subtitle="我是副标题",
markLineData=map_data,
markPointData=destination,
markLineTheme=markLineControl(),
markPointTheme=markPointControl()
)
plot(map_out)
通过设置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) #保存的同时自动调用浏览器窗口
魔方学院QQ群:
QQ群:
微信群: