R语言:在中国地图上填充离散变量

这是 使用ggplot2+sf绘制地图 课程的续篇。

继续上次的话题,上次我们介绍了如何使用 ggplot2 + sf 绘制中国各级行政地图。然后在地图上填充了随机生成的数据。需要注意的是,我们生成的随机数据是一个连续变量,所以我们使用的 scale_fill_viridis_c() 方案进行颜色映射。实际工作中我们还有可能会遇到离散变量的情形,或者需要把连续变量分割成离散变量进行绘图的情形。本文就介绍了如何进行这两种操作。

首先,同样我们先加载所需的 R 包和读入相关的数据集:

library(ggplot2)
library(sf)
library(tidyverse)
library(hrbrthemes)
mapdata <- read_sf("chinamap/中国省界.shp")
mapborder <- read_sf("chinamap/国界线.shp")
ggplot() +
geom_sf(data = mapdata) +
geom_sf(data = mapborder)

在中国地图上填充离散变量

首先是在地图中直接填充离散变量,还是要随机生成一些数据:

# 生成一个 level 变量,这个变量是从字母 ABCDE 里面采用有放回抽取的方式随机抽 34 个。
mapdata$level <- sample(LETTERS[1:5], 34, replace = TRUE)
glimpse(mapdata)

可以看到这里的 level 变量的类型是 character。在绘图的时候 ggplot2 会自动将 character 转换成因子变量:

ggplot() +
geom_sf(data = mapdata, aes(fill = level)) +
geom_sf(data = mapborder)

更多内容欢迎加入课程学习!

点击这里跳转到 RStata 短书平台获取附件:R语言:在中国地图上填充离散变量

评论