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()
¡Muchas gracias de antemano!
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:
Esto producirá el siguiente gráfico:
gráfico modificado
Como puedes ver, los elementos de la leyenda están ahora en el orden deseado.