前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 ggplot2 绘制单个和多个省份地图

使用 ggplot2 绘制单个和多个省份地图

作者头像
庄闪闪
发布2022-10-31 10:15:03
1.7K0
发布2022-10-31 10:15:03
举报

上一篇教程介绍了绘制完整地图的方法:R 语言绘制十段线地图,给特定省份填色,今天我们将继续探索分省市地图的绘制。

本文的所有代码以及数据可以在公众号后台回复 [中国地图绘制] 免费获得。如果需要往期部分推文代码,可去小编的 Github 获得。

数据准备

首先,加载所需 R 包,之后导入数据集,包含空间信息的 shp 文件。

代码语言:javascript
复制
library(rgdal)
library(ggplot2)
library(maptools)
library(mapproj)
library(ggsn)
library(readxl)
library(sf)
show_data <- read_xlsx("城市数据.xlsx","hubei")
shp_data <- st_read("CHN_adm/CHN_adm2.shp")

show_data 数据集

合并特定省份的数据

由于 show_data 中的城市名称是字符型,因此在合并数据之前,需要将 shp_data 中的城市名称转成字符型。然后,使用 left_join() 合并数据。

代码语言:javascript
复制
shp_data$NL_NAME_2 <- as.character(shp_data$NL_NAME_2)
my_data <- dplyr::left_join(show_data, shp_data,by = c("city" = "NL_NAME_2"))

图形绘制

在省份地图上标记各个城市。

代码语言:javascript
复制
ggplot(data = my_data) + geom_sf(aes(fill = as.factor(value), geometry = `geometry`)) + 
  geom_sf_text(aes(label = `city`,geometry = `geometry`), color = 'Black',size=2)+
  xlab("Long (°E)") + ylab("Lat (°N)") + 
  ##更改图形颜色,不加这个语句使用随机配色
  scale_fill_manual(
    "value",
    values = c("#DFD3F2", "#00C2F9", "#FFF7D0"),
    breaks = c("A", "B", "C"),
    labels = c("A", "B", "C")
  )+
  theme(legend.position = "top",panel.background = element_rect(fill = "white",color = "black"),
        panel.grid = element_line(color = "grey"))

绘制多个省份地图

有时候需要绘制一个区域的地图,比如:长三角京津冀等,绘图方法和单个省份一样,只是需要将多个省份的数据存储在一个文件中。

合并数据

小编使用的是 xlsx 格式的数据,因为可以创建多个 sheet,调用起来比较方便。

代码语言:javascript
复制
hubei <- read_xlsx("测试数据.xlsx","hubei")
jiangxi <- read_xlsx("测试数据.xlsx","jiangxi")
all_province <- rbind(hubei,jiangxi)

绘图

数据处理好后,其他步骤和之前一样。

代码语言:javascript
复制
shp_data <- st_read("CHN_adm/CHN_adm2.shp")
shp_data$NL_NAME_2 <- as.character(shp_data$NL_NAME_2)
data2 <- dplyr::left_join(all_province, shp_data,by = c("city" = "NL_NAME_2"))

ggplot(data = data2) + geom_sf(aes(fill = as.factor(value), geometry = `geometry`)) + 
  geom_sf_text(aes(label = `city`,geometry = `geometry`), color = 'Black',size=2)+
  xlab("Long (°E)") + ylab("Lat (°N)") + 
  ##更改图形颜色,不加这个语句使用随机配色
  scale_fill_manual(
    "value",
    values = c("#DFD3F2", "#00C2F9", "#FFF7D0"),
    breaks = c("A", "B", "C"),
    labels = c("A", "B", "C")
  )+
  theme(legend.position = "top",panel.background = element_rect(fill = "white",color = "black"),
        panel.grid = element_line(color = "grey"))

小结

绘制地图的命令还是比较简单的,关键是得有 shp 文件。

本文的所有代码以及数据可以在公众号后台回复 [中国地图绘制] 免费获得。如果需要往期部分推文代码,可去小编的Github获得。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据准备
    • 合并特定省份的数据
    • 图形绘制
    • 绘制多个省份地图
      • 合并数据
        • 绘图
        • 小结
        相关产品与服务
        数据保险箱
        数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档