Revertir orden de barra astackda

Estoy creando un gráfico de barras astackdas usando ggplot de esta manera:

plot_df <- df[!is.na(df$levels), ] ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill") 

Lo que me da algo como esto:

enter image description here

¿Cómo invierto el orden de las barras astackdas, para que el nivel 1 esté en la parte inferior y el nivel 5 en la parte superior de cada barra?

He visto una serie de preguntas sobre esto (por ejemplo, cómo controlar el orden del gráfico de barras astackdas utilizando identidad en ggplot2 ) y la solución común parece ser reordenar el dataframe para ese nivel, ya que lo que ggplot está usando determina el orden

Así que intenté reordenar usando dplyr:

plot_df % arrange(desc(levels))

Sin embargo, la ttwig sale igual. Tampoco parece hacer una diferencia si lo organizo por orden ascendente o descendente

Aquí hay un ejemplo reproducible:

 group <- c(1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4, 1,2,3,4) levels <- c("1","1","1","1","2","2","2","2","3","3","3","3","4","4","4","4","5","5","5","5","1","1","1","1") plot_df <- data.frame(group, levels) ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill") 

Las notas de la versión de ggplot2 versión 2.2.0 sobre barras de astackmiento sugieren :

Si quiere astackr en el orden opuesto, intente con forcats::fct_rev()

 library(ggplot2) # version 2.2.1 used plot_df <- data.frame(group = rep(1:4, 6), levels = factor(c(rep(1:5, each = 4), rep(1, 4)))) ggplot(plot_df, aes(group, fill = forcats::fct_rev(levels))) + geom_bar(position = "fill") 

Niveles inversos

Esta es la ttwig original :

 ggplot(plot_df, aes(group, fill = levels)) + geom_bar(position = "fill") 

Trama original

O bien, usando position_fill(reverse = TRUE) como lo sugirió alistair en su comentario :

 ggplot(plot_df, aes(group, fill = levels)) + geom_bar(position = position_fill(reverse = TRUE)) 

enter image description here

Tenga en cuenta que los niveles (colores) en la leyenda no están en el mismo orden que en las barras astackdas.

Intereting Posts