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

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

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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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 文件所在的文件夹就可以运行上面的代码了,运行之后就可以得到这样的一张地图了:

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

阅读更多:https://mp.weixin.qq.com/s/In77zxFJCH4_3yOpIZYArw
下载数据:https://rstata.duanshu.com/#/brief/course/adc3456625234f7fa7d6693793fba4de

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

https://tidyfriday.cn/posts/56090/

作者

Painter

发布于

2021-01-31

更新于

2021-02-09

许可协议

评论