Я строю карту, используя пакеты ggplot2
и sf
, и я хотел бы включить масштаб карты и стрелку севера в фигуру, используя ggsn
пакет. Вот в чем проблема. Я хочу показать фигуру с двумя или более facets
, но я хотел бы добавить масштаб и стрелку севера только к одной из граней фигуры.
Любая идея о том, как это сделать?
Воспроизводимый пример:
library(UScensus2000tract)
library(ggplot2)
library(spdep)
library(sf)
library(ggsn)
# load data
data("oregon.tract")
# convert spatial object to sf class
oregon_sf_A <- st_as_sf(oregon.tract)
oregon_sf_B <- st_as_sf(oregon.tract)
# organize data for facetting
oregon_sf_A$cat <- "A"
oregon_sf_B$cat <- "B"
oregon_sf <- rbind(oregon_sf_A, oregon_sf_B)
# create a second variable for facetting
oregon_sf$var2 <- sample(c("C","D"), nrow(oregon_sf), replace=T)
# Map
ggplot() +
geom_sf(data=oregon_sf, aes(fill=hispanic.t), color=NA) +
scale_fill_viridis(option = "inferno", direction=-1) +
facet_grid(~cat) +
north(data=oregon_sf, symbol=4, location="bottomleft", scale=.2) +
scalebar(data=oregon_sf, dist = 200, st.size=3, height=0.02, dd2km = TRUE, location="bottomright" , model = 'WGS84')
Проблема немного усложнится, если мы попытаемся использовать две переменные в facet_grid
:
# Map 2
ggplot() +
geom_sf(data=oregon_sf, aes(fill=hispanic.t), color=NA) +
scale_fill_viridis(option = "inferno", direction=-1) +
facet_grid(cat~var2) +
north(data=oregon_sf, symbol=4, location="bottomleft", scale=.2) +
scalebar(data=oregon_sf, dist = 200, st.size=3, height=0.02, dd2km = TRUE, location="bottomright" , model = 'WGS84')