Leyenda basada en la geometría en lugar de en la estética con ggplot.
La idea aquí es dibujar una leyenda para cada geom
con la misma estética. En el ejemplo a continuación, la leyenda generada asume que estas dos capas diferentes están en la misma escala, lo que resulta en este mapa.
Quiero que, como resultado, la leyenda en el gráfico esté separada en dos, para poder cambiarlas con un scale_fill_*
para cada capa.
Soy consciente de esta solución: https://stackoverflow.com/a/24874007/11056037, pero estoy buscando una forma más elegante y escalable de hacer esto.
library(tidyverse)
library(sf)
library(geobr)
mun <- map(11:12, read_municipality) %>%
map(mutate, index = seq_along(code_muni), .before = geom)
mun[[2]] <- mun[[2]] %>%
mutate(index = index + 100)
mun <- mun %>%
map(
~mutate(.x, index = cut(index, quantile(index), include.lowest = TRUE))
)
ggplot() +
geom_sf(data = mun[[1]], aes(fill = index)) +
geom_sf(data = mun[[2]], aes(fill = index))
¡Gracias!
davy.ai
Para separar la leyenda en el gráfico en dos capas, podemos agregar un argumento
name
único al mapeoaes
de cada capa. Esto nos permite usar funciones separadasscale_fill_*
para personalizar la leyenda de cada capa individualmente.Aquí tienes una versión actualizada del código:
“`{r}
library(tidyverse)
library(sf)
library(geobr)
mun <- map(11:12, read_municipality) %>%
map(mutate, index = seq_along(code_muni), .before = geom)
mun[[2]] <- mun[[2]] %>%
mutate(index = index + 100)
mun <- mun %>%
map(
~mutate(.x, index = cut(index, quantile(index), include.lowest = TRUE))
)
ggplot() +
geom_sf(data = mun[[1]], aes(fill = index, name = “Capa 1”)) +
geom_sf(data = mun[[2]], aes(fill = index, name = “Capa 2”)) +
scale_fill_continuous(name = “Capa 1”, low = “blanco”, high = “azul”) +
scale_fill_continuous(name = “Capa 2”, low = “blanco”, high = “rojo”)
“`
Este código utiliza el argumento
name
para asignar un nombre único al mapeofill
de cada capa. Luego agrega dos funcionesscale_fill_continuous
separadas, cada una con su propio nombre y colores personalizados. Esto resulta en un gráfico con dos leyendas separadas, una para cada capa.Espero que esto sea de ayuda. Avísame si tienes alguna otra pregunta.