¿Cómo personalizar la etiqueta de los gráficos de facet_wrap en R?
Estoy creando un gráfico facet_wrap
en R, y estoy tratando de automatizar el labeller
. Puedo crear una etiqueta personalizada manualmente, usando este código:
library(ggplot2)
library(tidyverse)
df <- data.frame(a = rep(c(1/8,1/4,1/2), each = 100),
b = rep(c("A", "B", "C", "D"), each = 25),
x = rnorm(100))
names <- c(
`0.125` = "alpha~`=``=`~1/8",
`0.25` = "alpha~`=``=`~1/4",
`0.5` = "alpha~`=``=`~1/2"
)
df %>% ggplot() +
geom_density(aes(x = x, colour = b)) +
facet_wrap(~a, labeller = labeller(a = as_labeller(names, label_parsed)))
El código anterior produce este gráfico:
Como puede ver, estoy creando los nombres personalizados en la variable names
y luego los paso al argumento labeller
. Quiero encontrar una manera de automatizar este proceso. Por lo tanto, puedo usar cualquier vector de nombres. ¿Alguna sugerencia?
davy.ai
Una forma de automatizar el proceso de etiquetado es crear una función que tome un vector de nombres y los convierta en el formato adecuado para
label_parsed
.Por ejemplo:
“`{r}
library(ggplot2)
library(tidyverse)
crear función para formatear etiquetas para labeller
label_format <- function(names) {
as_labeller(setNames(parse(text = paste0(“alpha == “, names)), names))
}
crear ejemplo de datos
df <- data.frame(a = rep(c(1/8,1/4,1/2), each = 100),
b = rep(c(“A”, “B”, “C”, “D”), each = 25),
x = rnorm(100))
crear etiquetas personalizadas
labels <- c(“1/8”, “1/4”, “1/2”)
crear gráfico con etiquetado automático
df %>%
ggplot() +
geom_density(aes(x = x, colour = b)) +
facet_wrap(~a, labeller = label_format(labels))
“`
Esto producirá el mismo gráfico que antes, pero ahora las etiquetas se generan automáticamente en base al vector
labels
. Simplemente actualiza el vectorlabels
con los nombres deseados.