楼主: 林随机漫步
6038 4

[实际应用] R语言绘制中国地图:着色省份、标注省份名称 [推广有奖]

  • 1关注
  • 3粉丝

已卖:1份资源

硕士生

7%

还不是VIP/贵宾

-

威望
0
论坛币
154 个
通用积分
102.8396
学术水平
11 点
热心指数
11 点
信用等级
11 点
经验
1957 点
帖子
67
精华
0
在线时间
138 小时
注册时间
2014-1-11
最后登录
2025-9-29

楼主
林随机漫步 发表于 2020-10-13 08:03:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
今天分享一个可以直接使用的中国地图,相较于其他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 (个人认为这是一份非常有价值的坐标数据,值得学习一下)

如想了解更多可私信或微信huyanggs

1、效果图

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

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

2、代码code
  1. library(geojsonsf)
  2. library(sf)
  3. library(ggplot2)
  4. library(RColorBrewer)

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

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

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

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

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


  22. ###----全国地图完整(无右下角小地图)----------###
  23. ggplot()+
  24.   # 绘制主图
  25.   geom_sf(data = CHINA,aes(fill = factor(yanse))) +
  26.   scale_fill_manual("class", values=c("#FFCCCC", "#FF9333", "#FF6660","#FF5111","#CC0070"),
  27.                     breaks = c("0~200","200~400","400~600","600~1000","1000+"),
  28.                     labels = c("0~200","200~400","400~600","600~1000","1000+"))+
  29.   # 绘制国境线及十/九段线
  30.   geom_sf(data = gjx)+
  31.   geom_text(data = province,aes(x=dili_Jd,y=dili_Wd,label=省市),
  32.             position = "identity",size=3,check_overlap = TRUE) +
  33.   labs(title="中国地图",subtitle="随机着色",caption = "reference")+
  34.   theme(
  35.     plot.title = element_text(color="red", size=16, face="bold",vjust = 0.1,hjust = 0.5),
  36.     plot.subtitle = element_text(size=10,vjust = 0.1,hjust = 0.5),
  37.     legend.title=element_blank(),
  38.     legend.position = c(0.2,0.2),
  39.     panel.grid=element_blank(),
  40.     panel.background=element_blank(),
  41.     axis.text=element_blank(),
  42.     axis.ticks=element_blank(),
  43.     axis.title=element_blank()
  44.   )
复制代码


【往期回顾推荐】

R 语言 逻辑运算:TRUE/FALSE

R语言 高阶可视化绘图系统:ggplot2入门

R语言,入门首看、必看基础概述

R语言数据管理与dplyr、tidyr

快速掌握R语言中的apply函数族 | 精选分享

R语言 分组计算,不止group_by

用R语言让你的可视化图表动起来!动起来!!附源代码

R语言 相关系数混合可视化矩阵实现


如想了解更多可私信或微信huyanggs





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:中国地图 中国地 R语言 elibrary province

沙发
sanjie27 发表于 2020-10-14 19:26:23
感谢分享代码,我运行后有一个问题,geom_text(data = province这里的province应该改为province_mid,或者前面的province_mid变量改为province;另外GitHub上的那几个文件直接按照链接下是不行的,文件在附件中。

data.zip
下载链接: https://bbs.pinggu.org/a-3327833.html

3.52 KB

本附件包括:

  • province.csv
  • your_data.csv

藤椅
林随机漫步 发表于 2020-12-24 12:49:11
sanjie27 发表于 2020-10-14 19:26
感谢分享代码,我运行后有一个问题,geom_text(data = province这里的province应该改为province_mid,或者前 ...

板凳
林随机漫步 发表于 2020-12-24 12:49:31
sanjie27 发表于 2020-10-14 19:26
感谢分享代码,我运行后有一个问题,geom_text(data = province这里的province应该改为province_mid,或者前 ...
谢谢补充

报纸
七星在北户 发表于 2021-1-19 14:07:38
sanjie27 发表于 2020-10-14 19:26
感谢分享代码,我运行后有一个问题,geom_text(data = province这里的province应该改为province_mid,或者前 ...
你好,我下载了你分享的这个数据,结果打开以后发现都是乱码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 04:17