前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言绘制中国地图:着色省份、标注省份名称

R语言绘制中国地图:着色省份、标注省份名称

作者头像
拴小林
发布2020-11-03 14:49:04
3.6K0
发布2020-11-03 14:49:04
举报
文章被收录于专栏:数据驱动实践数据驱动实践
今天分享一个可以直接使用的中国地图,相较于其他R语言绘制的地图,有以下优点:

1、包含十段线 http://xzqh.mca.gov.cn/map

2、标注省份名称

缺点:南海岛礁未绘制小地图

重点说明:

1、地图基础数据来自:http://xzqh.mca.gov.cn/data/ 中华人民共和国民政部官网

2、着色数据模板 :github:slyang-cn/data/your_data.csv

3、省市地理中心坐标 :基于st_centroid和省会坐标以及部分调整值,github:slyang-cn/data/province.csv (个人认为这是一份非常有价值的坐标数据,值得学习一下)

01

效果图

包含十段线和省名标注的中国地图

声明:以上地图仅供学习交流

02

代码code

代码语言:javascript
复制
library(geojsonsf)
library(sf)
library(ggplot2)
library(RColorBrewer)

API_pre = "http://xzqh.mca.gov.cn/data/"
## 1.全国
China = st_read(dsn = paste0(API_pre, "quanguo.json"), 
                stringsAsFactors=FALSE) 
st_crs(China) = 4326

# 2.国境线
China_line = st_read(dsn = paste0(API_pre, "quanguo_Line.geojson"), 
                     stringsAsFactors=FALSE) 
st_crs(China_line) = 4326

gjx <- China_line[China_line$QUHUADAIMA == "guojiexian",]

# 3.读取省份地理中心
# 地图中心坐标:基于st_centroid和省会坐标以及部分调整值
province_mid <- read.csv("https://raw.githubusercontent.com/slyang-cn/data/slyangcn/province.csv")

# 4.着色数据+全国地图
zhuose_data <- read.csv("https://raw.githubusercontent.com/slyang-cn/data/slyangcn/your_data.csv")
zhuose_data$QUHUADAIMA <- as.character(zhuose_data$QUHUADAIMA) # 因China数据中QUHUADAIMA是chr类型
CHINA <- dplyr::left_join(China,zhuose_data,by= "QUHUADAIMA")


###----全国地图完整(无右下角小地图)----------###
ggplot()+
  # 绘制主图
  geom_sf(data = CHINA,aes(fill = factor(yanse))) +
  scale_fill_manual("class", values=c("#FFCCCC", "#FF9333", "#FF6660","#FF5111","#CC0070"),
                    breaks = c("0~200","200~400","400~600","600~1000","1000+"),
                    labels = c("0~200","200~400","400~600","600~1000","1000+"))+
  # 绘制国境线及十/九段线
  geom_sf(data = gjx)+
  geom_text(data = province,aes(x=dili_Jd,y=dili_Wd,label=省市),
            position = "identity",size=3,check_overlap = TRUE) +
  labs(title="中国地图",subtitle="随机着色",caption = "reference")+
  theme(
    plot.title = element_text(color="red", size=16, face="bold",vjust = 0.1,hjust = 0.5),
    plot.subtitle = element_text(size=10,vjust = 0.1,hjust = 0.5),
    legend.title=element_blank(),
    legend.position = c(0.2,0.2),
    panel.grid=element_blank(),
    panel.background=element_blank(),
    axis.text=element_blank(),
    axis.ticks=element_blank(),
    axis.title=element_blank()
  )
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据驱动实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档