深圳人口返乡模拟图

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#导入数据

#处理标记线的数据

#标记点的数据

#使用remapC()绘制

#效果图

 

绘制以深圳为地点,到各个省为终点的动态迁徙图,各函数介绍可以参考本博客的 REmap包介绍及使用,均有详细介绍,这篇为实际应用

数据在附件

  • 导入数据
> library(REmap)
> options(remap.js.web = T)  #将结果保存在工作目录下,避免R关掉后图片被删除,可以通过getwd()函数的得到工作目录,取出图片

#读取数据
> MigrateData  <- read.csv('C:\\Users\\Xu\\Desktop\\MigrateDemo.csv',encoding='gb2312',header = F)
> head(MigrateData)
    V1    V2
1 湖南 11580
2 广西 11207
3 湖北  9235
4 贵州  9689
5 河南  9378
6 江西 12484
> names(MigrateData) <- c('province','values') #命名列

 

  • 处理标记线的数据

MarkLie_Data表示要传入绘制标记线(此项目就是迁徙路径线)的数据

包含三列,第一列 origin:起点,我们设置为深圳,第二列 destination 终点,第三列指定线条颜色color(因为在markLineControl里设置线条颜色容易出错)

> markLine_data <- data.frame(origin = rep("深圳",nrow(MigrateData)), 
+                             destination = MigrateData[1:nrow(MigrateData),1],#MigrateData[c('province')] 或者MigrateData[,1]
+                            
+                             color = rep("#fff",nrow(MigrateData))
+ )

> head(markLine_data)  #看下前几个效果
  origin destination color
1   深圳        湖南  #fff
2   深圳        广西  #fff
3   深圳        湖北  #fff
4   深圳        贵州  #fff
5   深圳        河南  #fff
6   深圳        江西  #fff

 

  • 标记点的数据

标记点的设置(此项目就是迁徙的终点),注意,因为是以深圳为起点,所以我们做下处理,这样能突出深圳的位置

> markPoint_data <- markLine_data[markLine_data!=""] 
> markPoint_data1 <- markPoint_data[which(markPoint_data!="深圳"&markPoint_data!="#fff")]      #作图时除去深圳这个点及对应的#fff字符串

 

  • 使用remapC()绘制

该函数主要用于绘制分块区域热力,如在地图上显示不同省份热力效果

> remapC(MigrateData,
+        title = "深圳人口返乡模拟图", #标题设置
+        subtitle ='2018年春节',  #副标题
+        
+        #主题进行设置
+        theme = get_theme(  
+          theme = 'Dark',#背景色
+          lineColor = '#FFFFFF' ,#对应为map图里面迁徙线条的颜色
+          titleColor = "#fff",
+          borderColor = "#999999",  #边界颜色
+          regionColor = "#000000",  #区域颜色
+          pointShow = F,   #是否展示各省会,城市所在点,设置为True时展示
+          pointColor = "gold" #设置上述点的颜色
+        ),
+        color=c('#CD0000','#FFEC8B'),   #颜色渐变方案,对应每个地区不同的value
+        
+        #迁徙路径的数据传进来
+        markLineData = markLine_data,
+        #设置线的样式
+        markLineTheme = markLineControl(
+          color = 'white',
+          lineWidth =2,
+          lineType = 'dashed',
+          effect = T #不写默认也为T,不过当线条过多时不会动效
+        ),
+        
+        #标记点的数据传进来
+        markPointData=markPoint_data1,   
+        #设置点样式
+        markPointTheme=markPointControl(  #通过markPointControl来设置样式
+          symbolSize=13,         #样式大小
+          effect=T,              #effctt =T 表示开启动效
+          effectType="scale",    
+          color="white"          #没有设置smybol 类型
+        )
+        
+        
+ )
  • 效果图

 


  •  

转载于:https://my.oschina.net/u/1785519/blog/1563795

你可能感兴趣的:(python)