? ? 由于繪圖涉及到國家領(lǐng)土主權(quán)問題呻此,還是嚴(yán)謹(jǐn)一些為好轮纫,在上一篇基礎(chǔ)上,主要參考了R 繪制漸變中國地圖及添加南海九段圖的思路焚鲜,代碼非常詳細掌唾,以及用ggplot2包繪制帶南海諸島的熱力地圖這篇放前,都是在原有地圖基礎(chǔ)上嵌套了包含南海諸島和九段線的圖。數(shù)據(jù)可從中國國家基礎(chǔ)地理信息數(shù)據(jù)網(wǎng)站中獲得糯彬。改成自己的數(shù)據(jù)跑一下代碼試試看:
library(mapdata)
library(maptools)
library(ggplot2)
library(plyr)
library(rgdal)
library(sp)
#fork 九段線
l9<-rgdal::readOGR("E:\\rstudy\\Rchina\\SouthSea\\九段線.shp")
#讀取地圖數(shù)據(jù)
china_map=readShapePoly("E:\\rstudy\\Rchina\\china\\bou2_4p.shp")
ggplot(china_map,aes(x=long,y=lat,group=group)) +
geom_polygon(fill="white",colour="grey") +
coord_map("polyconic")? #用polyconic投影
x <- china_map@data? ? #讀取行政信息
xs <- data.frame(x,id=seq(0:924)-1)? #含島嶼共925個形狀
china_map1 <- fortify(china_map)? ? #轉(zhuǎn)化為數(shù)據(jù)框
china_map_data <- join(china_map1, xs, type = "full")? ?#合并兩個數(shù)據(jù)框
unique(china_map@data$NAME)? ? #查看地圖數(shù)據(jù)省份名稱并確保填色數(shù)據(jù)與其一致
#讀取填色數(shù)據(jù)
mydata<-read.csv("E:\\rstudy\\te.csv")?
china_data <- join(china_map_data, mydata, type="full")? ?#合并數(shù)據(jù)框
china_data$te <- cut(china_data$te,breaks=c(0,0.25,0.5,0.75,1.01),labels=c('0.00~0.25','0.25~0.5','0.50~0.75','0.75~1.00'),right=FALSE,order=TRUE)? ?#切分?jǐn)?shù)據(jù)
windowsFonts(myFont = windowsFont("Times New Roman"))?
rhg_cols1 <- c("#F0FFF0","#C1FFC1","#9BCD9B","#698B69")? ?#分級填充顏色
province_city <- read.csv("E:\\rstudy\\Rchina\\chinaprovincecity2.csv")? #省會坐標(biāo)
#繪制主圖
p1 <- ggplot(china_data, aes(x = long, y = lat)) +
geom_polygon(aes(group = group, fill = te),colour="black",size=0.05) +
scale_fill_manual(values=rhg_cols1)+?
guides(fill=guide_legend(title='te '))+
coord_map("polyconic") +
geom_text(size=3,aes(x = jd,y = wd,label = province), hjust=0.5,vjust=0.5,data =province_city)+? ?#添加省會標(biāo)簽
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),? ? ? ? ? ?#圖例位置
? ? ? ? legend.text = element_text(size=10),? ? ?#圖例字體大小
? ? ? ? legend.key.size =unit(15, "pt"),? ? ? ? ?#圖例元素大小
? ? ? ? legend.title.align=0.5? ? ? ? ? ? #圖例標(biāo)題居中
? )
p1?
#繪制小圖
p2<-ggplot()+
? ? geom_polygon(data=china_data,aes(x=long,y=lat,group=group),color="grey40",fill="white")+? ?#繪制分省圖
? ? scale_fill_manual(values=rhg_cols1)+?
? ? geom_line(data=l9,aes(x=long,y=lat,group=group),color="red",size=0.5)+? ?#9段線
? ? coord_cartesian(xlim=c(105,125),ylim=c(3,30))+? ?#縮小顯示范圍在南部區(qū)域
? ? theme(
? ? ? ? aspect.ratio = 1.25, #調(diào)節(jié)長寬比
? ? ? ? axis.text = element_blank(),
? ? ? ? axis.ticks = element_blank(),
? ? ? ? axis.title = element_blank(),
? ? ? ? panel.grid = element_blank(),
? ? ? ? panel.background = element_blank(),
? ? ? ? panel.border = element_rect(fill=NA,color="gray60",linetype=1,size=0.8),
? ? ? ? plot.margin=unit(c(0,0,0,0),"mm"))
#嵌合2個圖
library(grid) #ggplot也是grid圖
vie <- viewport(width=0.15,height=0.10,x=0.68,y=0.25) #定義小圖的繪圖區(qū)域
p1 #繪制大圖
print(p2,vp=vie) #在p1上按上述格式增加小圖
繪圖效果就醬啦~