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))