查看原文
其他

动态地理信息可视化——散点地图系列

2017-01-31 小魔方 数据小魔方

这是一篇拖了好久的稿子,因为过年玩high了,一直放着没写,今天得空,赶快得空,赶紧整理一下。


本篇主讲leaflet在线地图系列中的散点系列,包含颜色映射规则(离散和连续)、大小映射规则。


其实也就是包含了我们看到的常规的散点图类型和气泡图类型。同时结合leaflet丰富多彩的背景地图主题进行展开。


#加载包:

library(plyr)

library(maps)

library(mapdata)

library(leaflet)

library(stringi)

library(maptools)

library(htmltools)

library(RColorBrewer)

library(ggplot2)


为方便展示这里统一使用中国省级行政地图(shp格式导入),在省会城市坐标进行指标数据映射。


地图素材数据导入:

province_city <- read.csv("c:/rstudy/chinaprovincecity.csv") #中国各省省会坐标

province_city$size<-round(runif(34,5,10),2)                   #添加连续数值变量

province_city$type<-factor(sample(LETTERS[1:5],34,replace=TRUE))  #添加因子变量以便之后演示

co<-substr(rainbow(34),1,7)

province_city<-data.frame(province_city,co)


制作色盘:

pal <- colorFactor(c("green", "red","yellow","green","blue"), domain = c("A", "B","C","D","E"))#因子变量的映射色盘

cPal <- colorNumeric(palette = c("blue","yellow","red"),domain =province_city$size)         #数值型变量的映射色盘  


作图函数:

leaflet(province_city)%>%addTiles()%>% addMarkers(lng=~jd,lat=~wd,popup=~city) 



leaflet(province_city)%>%addTiles()%>% addCircles(lng=~jd,lat=~wd,color="red",weight=~size,popup=~city) 



leaflet(province_city)%>%addTiles()%>% addCircleMarkers(lng=~jd,lat=~wd,radius=~size, color = ~co, fill=TRUE,popup=~city)



离散标度映射:

leaflet(province_city)%>%addTiles()%>% addCircles(lng=~jd,lat=~wd,color = ~pal(type),weight=~size,popup=~city)%>%  

addLegend("bottomright",pal=pal,values = ~type,title = "GDP等级",labFormat = labelFormat(suffix = "档"),opacity=1) 

leaflet(province_city)%>%addTiles()%>% addCircleMarkers(lng=~jd,lat=~wd,color = ~pal(type),radius = ~size,fill=TRUE,popup=~city) 

addLegend("bottomright",pal=pal,values = ~type,title = "GDP等级",labFormat = labelFormat(suffix = "档"),opacity=1)  




连续标度映射:

leaflet(province_city)%>%addTiles()%>% 

addCircles(lng=~jd,lat=~wd,fillColor=~cPal(size),weight=~size,stroke=FALSE,fillOpacity=0.8,popup=~city)%>%

addLegend("bottomright",pal=cPal,values = ~size,title = "GDP等级",labFormat = labelFormat(suffix = "档"),opacity=1) 

leaflet(province_city)%>%addTiles()%>% 

addCircleMarkers(lng=~jd,lat=~wd,fillColor=~cPal(size),radius = ~size,stroke=FALSE,fillOpacity=0.8,popup=~city)%>%

addLegend("bottomright",pal=cPal,values = ~size,title = "GDP等级",labFormat = labelFormat(suffix = "档"),opacity=1) 



几种常见的地图风格主题效果:


默认点形状与几种常见的地图主题风格搭配效果:


leaflet(province_city)%>%addProviderTiles("Esri.WorldStreetMap")%>%addMarkers(lng=~jd,lat=~wd,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.WorldImagery")%>%addMarkers(lng=~jd,lat=~wd,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.WorldTerrain")%>%addMarkers(lng=~jd,lat=~wd,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.NatGeoWorldMap")%>%addMarkers(lng=~jd,lat=~wd,popup=~city) 




#####################################################################


实心点形状与几种常见的地图主题风格搭配效果:

leaflet(province_city)%>%addProviderTiles("Esri.WorldStreetMap")%>%addCircles(lng=~jd,lat=~wd,color="red",weight=~size,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.WorldImagery")%>%addCircles(lng=~jd,lat=~wd,color="red",weight=~size,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.WorldTerrain")%>%addCircles(lng=~jd,lat=~wd,color="red",weight=~size,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.NatGeoWorldMap")%>%addCircles(lng=~jd,lat=~wd,color="red",weight=~size,popup=~city) 


#####################################################################


带轮廓的点形状与几种常见的地图主题风格搭配效果:


leaflet(province_city)%>%addProviderTiles("Esri.WorldStreetMap")%>%addCircleMarkers(lng=~jd,lat=~wd,radius=~size,color=~co,fill=TRUE,popup=~city) 

leaflet(province_city)%>%addProviderTiles("Esri.WorldImagery")%>%addCircleMarkers(lng=~jd,lat=~wd,radius=~size,color=~co,fill=TRUE,popup=~city)

leaflet(province_city)%>%addProviderTiles("Esri.WorldTerrain")%>%addCircleMarkers(lng=~jd,lat=~wd,radius=~size,color=~co,fill=TRUE,popup=~city)

leaflet(province_city)%>%addProviderTiles("Esri.NatGeoWorldMap")%>%addCircleMarkers(lng=~jd,lat=~wd,radius=~size,color=~co,fill=TRUE,popup=~city)



可选择的地图类型:

addProviderTiles("Esri.WorldStreetMap")  #浅色

addProviderTiles("Esri.WorldImagery")    #深色深色卫星云图

addProviderTiles("Esri.WorldTerrain")    #亮白色

addProviderTiles("Esri.NatGeoWorldMap")  #深沉轮廓色

addProviderTiles("Stamen.Toner")         #Third-Party Tiles

addProviderTiles("Acetate.terrain")      #

addProviderTiles("CartoDB.Positron")

addProviderTiles("Stamen.TonerLabels")   #


本篇点形状是可以支持自定义的,需要使用网络图标资源,但是鉴于步骤和实用性,就此略过,如果感兴趣,可以私下探讨。


我是分割线〜


欢迎关注魔方学院QQ群





您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存