47 votes

Commande de barres dans ggplot

J'ai regardé à travers les réponses dans ce forum, mais n'arrive pas à trouver une réponse à ce problème spécifique. J'ai les données suivantes et que vous voulez créer un graphique à barres où les bars sont classés du plus grand au plus petit en termes de "Valeur", plutôt que de les faire dans l'ordre alphabétique:

breadth_data <- read.table(textConnection("Stakeholder  Value
'Grantseekers'  0.90
'Donors'    0.89
'Community' 0.55
'Hurricane Relief Fund' 0.24
'Media' 0.19
'Employment Seekers'    0.12
'Affiliates'    0.10
'Youth' 0.09
'Women' 0.02
'Former Board Members'  0.01"), header=TRUE)

Ensuite, la base de la barre graphique:

c <- ggplot(breadth_data, aes(x=Stakeholder, y=Value))
c + geom_bar(stat="identity") + coord_flip() + scale_y_continuous('') + scale_x_discrete('')

J'ai essayé beaucoup de différentes reorderings et les transformations que j'ai vu sur StackOverflow mais je n'arrive pas à en trouver un qui fonctionne. Je suis sûr que c'est assez simple, mais j'apprécierais toute aide!

Merci,

Greg

70voto

Gavin Simpson Points 72349

Vous voulez la fonction reorder() :

 breadth_data <- transform(breadth_data, 
                          Stakeholder = reorder(Stakeholder, Value))
 

Qui donne:

barplot réordonné

Si vous les voulez en sens inverse, une solution simple consiste simplement à utiliser order() sur Value dans l'appel reorder() :

 breadth_data <- transform(breadth_data,
                          Stakeholder = reorder(Stakeholder, 
                                                order(Value, decreasing = TRUE)))
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X