美文网首页R语言
接上篇,R语言中国各省填色图,含南海诸岛和九段线

接上篇,R语言中国各省填色图,含南海诸岛和九段线

作者: 昵称全都被占用 | 来源:发表于2020-05-15 18:25 被阅读0次

    由于绘图涉及到国家领土主权问题,还是严谨一些为好,在上一篇基础上,主要参考了R 绘制渐变中国地图及添加南海九段图的思路,代码非常详细,以及用ggplot2包绘制带南海诸岛的热力地图这篇,都是在原有地图基础上嵌套了包含南海诸岛和九段线的图。数据可从中国国家基础地理信息数据网站中获得。改成自己的数据跑一下代码试试看:

library(mapdata)

library(maptools)

library(ggplot2)

library(plyr)

library(rgdal)

library(sp)

#fork 九段线

l9<-rgdal::readOGR("E:\\rstudy\\Rchina\\SouthSea\\九段线.shp")

#读取地图数据

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)    #转化为数据框

china_map_data <- join(china_map1, xs, type = "full")   #合并两个数据框

unique(china_map@data$NAME)    #查看地图数据省份名称并确保填色数据与其一致

#读取填色数据

mydata<-read.csv("E:\\rstudy\\te.csv") 

china_data <- join(china_map_data, mydata, type="full")   #合并数据框

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)   #切分数据

windowsFonts(myFont = windowsFont("Times New Roman")) 

rhg_cols1 <- c("#F0FFF0","#C1FFC1","#9BCD9B","#698B69")   #分级填充颜色

province_city <- read.csv("E:\\rstudy\\Rchina\\chinaprovincecity2.csv")  #省会坐标

#绘制主图

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)+   #添加省会标签

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            #图例标题居中

  )

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))+   #缩小显示范围在南部区域

    theme(

        aspect.ratio = 1.25, #调节长宽比

        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) #定义小图的绘图区域

p1 #绘制大图

print(p2,vp=vie) #在p1上按上述格式增加小图

绘图效果就酱啦~

相关文章

  • 接上篇,R语言中国各省填色图,含南海诸岛和九段线

    由于绘图涉及到国家领土主权问题,还是严谨一些为好,在上一篇基础上,主要参考了R 绘制渐变中国地图及添加南海九段...

  • R语言绘制中国各省填色图,SHP文件

    R语言小白,第一次画图,查了很多步骤文章,发现R语言做地图上的分析这篇,很详细,完全没有报错,自己follow做了...

  • R-如何用语言画中国地图(含南海诸岛和九段线)

    目标:用R绘制标准的中国地图,并且分省给图片上色(分别生成中文版和英文版)。 用到的分省数据如图1所示。 在自然资...

  • 历史中的南海。

    中国确立九段线内岛滩等及附属海域的主权。其中就是南海诸岛:古称长沙分为四沙,东沙群岛、西沙群岛、中沙群岛、南沙群岛...

  • 南沙群岛[6]位于中国南疆的九段线内的南部,在南海诸岛中岛礁最多,散布范围最广的一椭圆形珊瑚礁群。位于北纬3°40...

  • 南沙群岛[6]位于中国南疆的九段线内的南部,在南海诸岛中岛礁最多,散布范围最广的一椭圆形珊瑚礁群。位于北纬3°40...

  • 南沙群岛[6]位于中国南疆的九段线内的南部,在南海诸岛中岛礁最多,散布范围最广的一椭圆形珊瑚礁群。位于北纬3°40...

  • 彩铅画填色:女孩和睡莲(Q版)

    彩铅画填色:女孩和睡莲(Q版)。 六月荷花开了,端午节那个周六去看了荷花。五月是睡莲盛开的季节。 填色线稿图没有荷...

  • 端午你们公司发粽子了吗?

    试了一下线稿与填色,最后发现,填色作用不大,因为填色没有使形象更立体,所以决定放弃填色这一步,而且从铅线到黑色的过...

  • python填色循环出图

    雷达填色图 感谢焦老板和冯师兄。

网友评论

    本文标题:接上篇,R语言中国各省填色图,含南海诸岛和九段线

    本文链接:https://www.haomeiwen.com/subject/aahhohtx.html