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.

Cambiar el orden de la leyenda en ggplot cuando las coordenadas están invertidas.

Tengo un problema muy simple que no logré resolver. En la siguiente leyenda, me gustaría tener “trabajo” encima de “sueño” y mantener el gráfico y los colores sin cambios (así que trabajo en azul y sueño en rojo).

  data <- data.frame(Name = rep(c("Tom","Ana"), 2),
                 Category = rep(c("sueño","trabajo"),each=2),
                 Percentage = c(40,20,60,80))
ggplot(data, aes(fill=Category, y=Percentage, x=Name)) + 
geom_bar(position="fill", stat="identity", colour="black") +
coord_flip()

gráfico actual

¡Muchas gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el orden de los elementos de la leyenda en ggplot2, puedes especificar manualmente el orden de los niveles del factor. Puedes hacer esto utilizando la función factor() con el argumento levels.

    En este caso, quieres cambiar el orden de los elementos de la leyenda en la estética fill. Por lo tanto, puedes utilizar la función factor() en la variable Category, y específicar los niveles en el orden deseado: “work” primero y “sleep” segundo.

    Aquí está el código modificado:

    data <- data.frame(Name = rep(c("Tom","Ana"), 2),
                       Category = rep(c("sleep","work"), each=2),
                       Percentage = c(40,20,60,80))
    
    # Utiliza factor() para especificar el orden de los niveles de Category
    data$Category <- factor(data$Category, levels = c("work", "sleep"))
    
    ggplot(data, aes(fill=Category, y=Percentage, x=Name)) + 
      geom_bar(position="fill", stat="identity", colour="black") +
      coord_flip()
    

    Esto producirá el siguiente gráfico:

    gráfico modificado

    Como puedes ver, los elementos de la leyenda están ahora en el orden deseado.

Comments are closed.