contrôle de l'ordre de la grille de facette/enveloppe de facette dans ggplot2? [dupliquer]
Cette question a déjà une réponse ici:
- Comment changer l'ordre des étiquettes à facettes dans ggplot (étiquettes personnalisées à facettes) 2 réponses
Je trace des choses en utilisant facet_wrap
et facet_grid
dans ggplot, comme:
ggplot(iris) + geom_histogram(aes(iris$Petal.Width)) + facet_grid(Species ~ .)
Est-il possible de contrôler l'ordre dans lequel les Species
panneaux sont ordonnés dans l'intrigue? Cela peut-il être fait sans changer le iris
dataframe ou en faire un nouveau? La valeur par défaut ici montre setosa, versicolor, virginica mais je voudrais un ordre différent. grâce.
1 réponses
Je ne pense pas pouvoir vraiment satisfaire votre exigence "sans créer de nouveau cadre de données" , mais vous pouvez créer le nouveau cadre de données à la volée:
ggplot(transform(iris,
Species=factor(Species,levels=c("virginica","setosa","versicolor")))) +
geom_histogram(aes(Petal.Width))+ facet_grid(Species~.)
Je suis d'accord que ce serait bien s'il y avait un autre moyen de contrôler cela, mais ggplot
est déjà un moteur assez puissant (et compliqué)...
Notez que l'ordre de (1) lignes du jeu de données est indépendant de l'ordre de (2) niveaux du facteur. #2 est ce que factor(...,levels=...)
change, et ce que ggplot
regarde pour déterminer l'ordre des facettes. Faire #1 (trier les lignes de la trame de données dans un ordre spécifié) est un défi intéressant. Je pense que j'y parviendrais en faisant #2 d'abord, puis en utilisant order()
ou arrange()
pour trier en fonction des valeurs numériques du facteur:
neworder <- c("virginica","setosa","versicolor")
library(plyr) ## or dplyr (transform -> mutate)
iris2 <- arrange(transform(iris,
Species=factor(Species,levels=neworder)),Species)
Je ne peux pas voir immédiatement un moyen rapide de le faire sans changer l'ordre des niveaux de facteurs (vous pouvez le faire et ensuite Réinitialiser l'ordre des niveaux de facteurs en conséquence).
Dans général, les fonctions de R qui dépendent de l'ordre des niveaux d'une variable catégorique sont basées sur l'ordre des niveaux des facteurs, pas sur l'ordre des lignes de l'ensemble de données: la réponse ci-dessus s'applique plus généralement.