Inverse empilés l'ordre de la barre
Je suis de la création d'un graphique à barres empilées à l'aide de ggplot comme ceci:
plot_df <- df[!is.na(df$levels), ]
ggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = "fill")
Qui me donne quelque chose comme ceci:
Comment puis-je inverser l'ordre barres empilées eux-mêmes, de sorte que le niveau 1 est en bas, et le niveau 5 est en haut de chaque barre?
J'ai vu un certain nombre de questions sur ce (par exemple,Comment contrôler la commande de diagramme à barres empilées à l'aide d'identité sur ggplot2) et la solution semble être de réorganiser le dataframe par que niveau que ce ggplot est à l'aide de la déterminer l'ordre
J'ai donc essayé la réorganisation de l'aide dplyr:
plot_df <- df[!is.na(df$levels), ] %>% arrange(desc(levels))
Cependant, l'intrigue s'agit de la même. Il ne semble pas faire une différence si je trier par ordre croissant ou décroissant
Voici un exemple reproductible:
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")
- L'ordre des observations n'a pas de sens, mais l'ordre des niveaux de facteur de n'. Aussi, reprex.
- oui, j'ai aussi essayé de changer le niveau du facteur de l'ordre avec
levels(plot_df$levels) <- c("1", "2", "3", "4", "5")
(et l'inverse) mais cela ne change pas le graphe d'ordre - Également ajouté un exemple de données
plot_df %>% mutate(levels = factor(levels, levels = 5:1)) %>% ggplot(aes(group, fill = levels)) + geom_bar(position = "fill")
ou tout simplementggplot(plot_df, aes(group)) + geom_bar(aes(fill = levels), position = position_fill(reverse = TRUE))
Vous devez vous connecter pour publier un commentaire.
Les notes de version de
ggplot2
de la version 2.2.0 sur l'Empilement des bars suggèrent:C'est le parcelle d'origine:
Ou, à l'aide de
position_fill(reverse = TRUE)
comme suggéré par alistaire dans son commentaire:Remarque que les niveaux (couleurs) dans la légende n'est pas dans le même ordre que dans les barres empilées.