Ordem de barras empilhadas reversa
Estou criando um gráfico de barras empilhadas usando ggplot como este:
plot_df <- df[!is.na(df$levels), ]
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
O que me dá algo assim:
Como inverter a ordem das barras empilhadas, para que o nível 1 fique na parte inferior e o nível 5 na parte superior de cada barra?
Eu já vi várias perguntas sobre isso (por exemplo,Como controlar a ordem do gráfico de barras empilhadas usando a identidade no ggplot2) e a solução comum parece ser reordenar o quadro de dados nesse nível, conforme o que o ggplot está usando para determinar a ordem
Então, eu tentei reordenar usando o dplyr:
plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))
No entanto, o enredo sai da mesma. Também não parece fazer diferença se eu organizo por ordem crescente ou decrescente
Aqui está um exemplo reproduzível:
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")