1、繪制中國地圖
library("maptools")
china_map = readShapePoly("D:/Astatistics/R/畫熱力圖數據材料/中國省級地圖空間數據文件/bou2_4p.shp") # 讀取地圖空間數據
plot(china_map)#可以不畫
2*、改變投影方式
library(ggplot2)
ggplot(china_map,aes(x=long,y=lat,group=group)) +
geom_polygon(fill="white",colour="grey") +
coord_map("polyconic")
3、加載和拼接行政信息
x <- china_map@data #讀取行政信息
xs <- data.frame(x,id=seq(0:924)-1) #含島嶼共925個形狀
library(ggplot2)
china_map1 <- fortify(china_map) #轉化為數據框
library(plyr)
china_map_data <- join(china_map1, xs, type = "full") #合並兩個數據框
4、制作業務工作表,保存為csv。需要NAME行(一定命名為NAME),和繪圖指標C1
其中,查看數據包里各省名稱
unique(china_map@data$NAME)
5、讀取業務指標,與地理數據合並
mydata <- read.csv("c:/rstudy/geshengzhibiao.csv") #讀取指標數據,csv格式
china_data <- join(china_map_data, mydata, type="full") #合並兩個數據框
提示:Joining by: NAME
6、繪制地圖
ggplot(china_data, aes(x = long, y = lat, group = group,fill = zhibiao)) +
geom_polygon(colour="grey40") +
scale_fill_gradient(low="white",high="steelblue") + #指定漸變填充色,可使用RGB
coord_map("polyconic") + #指定投影方式為polyconic,獲得常見視角中國地圖
theme( #清除不需要的元素
panel.grid = element_blank(),
panel.background = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
legend.position = c(0.2,0.3)
)
7*、計算經緯度平均值添加標簽
midpos <- function(x) mean(range(x,na.rm=TRUE)) #取形狀內的平均坐標 centres <- ddply(china_data,.(province),colwise(midpos,.(long,lat))) ggplot(china_data,aes(long,lat))+ #此處語法與前面不同,參考ggplot2一書P85 geom_polygon(aes(group=group,fill=zhibiao),colour="black")+ scale_fill_gradient(low="white",high="steelblue") + coord_map("polyconic") + geom_text(aes(label=province),data=centres) + theme( panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank() )
8*、讀取省會城市坐標添加標簽
province_city <- read.csv("D:/Astatistics/R/畫熱力圖數據材料/省會坐標.csv") #讀取省會城市坐標 ggplot(china_data,aes(long,lat))+ geom_polygon(aes(group=group,fill=zhibiao),colour="grey60")+ scale_fill_gradient(low="white",high="steelblue") + coord_map("polyconic") + geom_text(aes(x = jd,y = wd,label = province), data =province_city)+ theme( panel.grid = element_blank(), panel.background = element_blank(), axis.text = element_blank(), axis.ticks = element_blank(), axis.title = element_blank() )
參考鏈接:
1)http://blog.sina.com.cn/s/blog_6bc5205e0102vma9.html #R筆記1:ggplot繪制商務圖表--中國分省熱力地圖
2)https://site.douban.com/182577/widget/notes/10568279/note/257898418/ #R for map (2上)
3)http://www.sohu.com/a/145415161_572440 #R語言可視化-關於ggplot所支持的數據地圖素材類型