Modifier l'ordre d'une discrète x à l'échelle
Je fais un esquivé graphique à barres à l'aide de ggplot avec une échelle en x, l'axe des x sont maintenant disposées dans l'ordre alphabétique, mais j'ai besoin de la modifier de sorte qu'il est ordonné par la valeur de l'axe des y (c'est à dire, le plus haut de la barre sera placée sur la gauche).
J'ai essayé de l'ordre ou de tri, mais le résultat en sorte de l'axe des x, mais pas les bars, respectivement.
Qu'ai-je fait de mal?
Vous devez vous connecter pour publier un commentaire.
Essayer de régler manuellement les niveaux de ce facteur sur l'axe des abscisses. Par exemple:
Comme James l'a souligné dans sa réponse,
réorganiser
est le idiomatiques permet de réordonner les taux de facteur.La meilleure façon pour moi a été l'aide de vecteur avec des catégories dans l'ordre j'ai besoin que
limits
paramètrescale_x_discrete
. Je pense que c'est assez simple et directe de la solution.factor
etreorder
modifications des caractéristiques des données, mais dans lesggplot()
appel, et n'a donc plus qu'il ne faut pour le problème à la main.scale_x_discrete(limits = DT$x[order(-DT$y)])+
Vous pouvez utiliser
reorder
:Edit:
D'avoir le plus haut de la barre à gauche, vous devez utiliser un peu de bidouille:
Je m'attends à ce aussi avoir des hauteurs, mais ce n'est pas, de sorte qu'il fonctionne!
Hadley a été l'élaboration d'un ensemble appelé
forcats
. Ce package rend la tâche beaucoup plus facile. Vous pouvez exploiterfct_infreq()
lorsque vous voulez changer l'ordre de l'axe x en fonction de la fréquence d'un facteur. Dans le cas de lamtcars
exemple dans ce post, vous souhaitez réorganiser les niveaux decyl
par la fréquence de chaque niveau. Le niveau de ce qui apparaît le plus souvent des séjours sur le côté gauche. Tous vous avez besoin est lafct_infreq()
.Si vous voulez aller dans l'autre sens, vous pouvez utiliser
fct_rev()
avecfct_infreq()
.Je réalise que c'est vieux, mais peut-être que cette fonction que j'ai créé est utile à quelqu'un là-bas:
Maintenant, avec cette fonction, vous pouvez, de manière interactive la parcelle avec ggplot2, comme ceci:
Comme on le voit, la
order_axis
fonction crée un autre dataframe avec une nouvelle colonne avec le même nom mais avec un_o
à la fin. Cette nouvelle rubrique a des niveaux dans l'ordre croissant, de sorte ggplot2 automatiquement parcelles dans cet ordre.C'est un peu limité (ne fonctionne que pour des caractères ou des facteur numériques et les combinaisons de colonnes et dans l'ordre croissant) mais je trouve toujours très utile pour tracer sur l'aller.
reorder
directement. Ne pasggplot(df, aes(x = reorder(AXIS_X, COLUMN_Y), y = COLUMN_Y)) + ...
faire la même chose, de façon concise, et sans l'aide de la fonction?