es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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:

facetplot

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?

Tags:  , ,

Answer

  1. Avatar for 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 vector labels con los nombres deseados.

Comments are closed.