使用 R 语言绘制全球各国(地区)省级行政区划地图矢量数据 & 代码

之前给大家分享了一份全球各国/地区的二级行政区划数据:数据 & 代码分享|使用 R 语言绘制全球各国市级行政区划地图数据 & 代码,这一次给大家分享一份全球各国/地区的一级行政区划数据和 R 语言绘图代码,考虑到这份数据里面和中国相关的地图数据都是不准确的,所以我删除了中国和印度的数据。

效果预览

这 254 份地图数据均由代码自动生成,每一份地图数据包含如下内容:

文件预览
  • 1 个 geojson 文件:GEOJSON 数据;
  • 1 个 R 文件:R 绘制使用该地图数据绘制地图的示例代码;
  • 1 个 pdf 文件:R 语言绘制的效果预览,由于图片是自动生成的,所以比较粗糙。

为了方便大家使用,我为每份数据都准备了一段使用示例代码,例如 South Korea 地图里面的 South Korea.R 文件的内容为:

# South Korea 一级行政区划地图的绘制方法
# 欢迎关注微信公众号 RStata 获取更多 R 语言相关的学习资料和资源!
# 作者:微信 r_stata
# 注意:运行代码前请记得把工作目录设置为 South Korea.geojson 文件所在的文件夹。

# 安装 R 包(如果没有装的话)
install.packages("tidyverse")
install.packages("ggplot2")
install.packages("sf")
install.packages("hrbrthemes")
devtools::install_git("https://gitee.com/tidyfriday/ggsflabel.git")

# 加载 R 包
library(tidyverse)
library(sf)
library(hrbrthemes)
library(ggsflabel)

# 读取地图数据
read_sf("South Korea.geojson") -> da

# 生成 pop 变量:1-80 的随机分布
# 将 pop 切分成分组变量
da %>%
mutate(pop = runif(nrow(da), 1, 80),
pop = cut(pop, breaks = 0:8 * 10)) -> da

# 将 pop 变量填充到地图上
ggplot(da) +
geom_sf(aes(fill = pop), size = 0.05, color = "white") +
geom_sf_label_repel(aes(label = NAME_1) +
scale_fill_viridis_d(option = "A") +
theme_modern_rc() +
labs(title = da$NAME_0[1]) +
theme(axis.title.x = element_blank(),
axis.title.y = element_blank())

这里我使用的是 ggsflabel 包解决标签重叠的问题。

只要把工作目录切换至 South Korea.geojson 文件所在的文件夹就可以运行上面的代码了,运行之后就可以得到这样的一张地图了:

South Korea 一级行政区划地图

由于删除了中国和印度的数据,所以这里我就不再展示世界地图的绘制效果了。

注意事项

  1. 由于原始数据不准确,所以分享的数据中没有中国和印度的数据;
  2. geojson 格式的数可以使用 GIS 软件编辑,因此即使你不使用 R 语言,这份数据大礼包依然是非常有用的;
  3. 标题所说的省级行政区划是针对中国的,更准确的说法应该是一级区划。

点击这里跳转到 RStata 短书平台获取附件:使用 R 语言绘制全球各国(地区)省级行政区划地图矢量数据 & 代码

评论