R绘制2013年城市的灯光数据分级图
###  把与城市相对应的数据绘制到城市polygons图上   ###
##  先在EXCEL里把所需数据与已知city或county数据对齐,共344个城市,保存为csv的格式###
##   读取所需数据   ###
library(readr)
L_2013 <- read_csv("spatial analysis/LIGHT_China/L_2013.csv")
##   把需要画图的列提取为数据框形式   ###
L=data.frame(L_2013$LIGHTmean2013, id.1=seq(0:343)-1)
##   要用之前编辑好的 LIGHTmean2013 列大小画分级图,为数据框增加一列 ID值命名为id.1,为了不与空间数据的id重名   ###
library(rgdal)
city=readOGR('/Users/abc/spatial analysis/gadm36_CHN_shp/gadm36_CHN_2.shp')
par(mar=c(0,0,0,0))
plot(city,col='snow',ylim=c(25,49),lty=1,lwd=0.1)
##   把大的空间数据框转化成可编辑的简单数据框   ###
library(ggplot2)
city1=fortify(city)
##   为 city1 数据框增添一列id.1 ,数值是等于原来的city1里面的id列   ##
city1$id.1=city1$id
##   为避免重复,把city2去掉id这一列   ##
city2=city1[,-6]
##   接下来就是合并两个数据框,id值匹配   ##
library(plyr)
city_map=merge(city2 , L , by='id.1' , all.x = TRUE)
#   ggplot  需要注意这之前一定要先画一次空间polygon图,这样coords_map里的参数就可以不用再特意设置而是默认为city的  #
ggplot()+
  geom_polygon(data = city_map , 
               aes(long , lat , group = group , fill = L_2013.LIGHTmean2013),
               color = 'black',
               size = 0.25)+
  coord_map(ylim = c(15,55))
                                        
                                    
附件列表