我在使用
geom_sf
和 facet_wrap
时遇到问题。
下面是一个可重现的示例。当我使用“ct_sf1”时,我看不到第一个 geom_sf 的边界。
library(dplyr)
library(ggplot2)
library(sf)
library(tigris)
ct_sf <- tigris::county_subdivisions(state = "09", cb = T, class = "sf")
ct_sf1 <- ct_sf %>% rowwise() %>% mutate(group = as.character(sample(LETTERS[1:4], 1)))
ggplot(ct_sf1) +
geom_sf(fill = "gray95", color = "gray50", size = 0.5) +
geom_sf(aes(fill = group),inherit.aes = F) +
facet_wrap(~group)
但是,当我使用以下代码时,第一个
ct_sf
中的geom_sf
和第二个ct_sf1
中的geom_sf
它可以工作,不确定是什么导致第一个代码无法工作。
ggplot() +
geom_sf(data = ct_sf,fill = "gray95", color = "gray50", size = 0.5) +
geom_sf(data = ct_sf1,aes(fill = group)) +
facet_wrap(~group)
在第一个代码中,第二个
geom_sf
与第一个代码重叠,因为它应用于相同的数据,然后 facet_wrap
按组拆分数据。
在第二个代码中,
facet_wrap
仅分割ct_sf1
对象,第一个对象绘制在所有面上。
顺便说一句,您可以在不使用
rowwise
的情况下加快组的生成速度:
ct_sf1 <- ct_sf %>%
mutate(group = as.character(sample(LETTERS[1:4], nrow(.), replace = T)))