ordre des barres dans geom_bar

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

herve chapuis
Messages : 110
Enregistré le : 05 Déc 2008, 15:26

ordre des barres dans geom_bar

Messagepar herve chapuis » 03 Aoû 2021, 09:13

Bonjour

Je voudrais produire un graphe avec le nombre de descendants par père, des plus prolifiques aux moins prolifiques.
J'ai un fichier de pedigree (animal, père, mère) et j'obtiens l'effectif par reproducteur avec la fonction table

Code : Tout sélectionner

listper<-table(ped_new$sire)
listper<-data.frame(listper)
listper<-listper %>% arrange(-Freq)

j'ai fait un tri sur -Freq afin d'obtenir l'ordre souhaité.

Code : Tout sélectionner

> head(listper)
        Var1 Freq
1 B_20020341   16
2 B_20020487   13
3 B_20020398   12
4 B_20020444   12
5 B_20020372    9
6 B_20020424    9


Ensuite je voudrais produire le graphe.
Mais le code suivant :

Code : Tout sélectionner

ggplot(data = listper,aes(x=Var1,y=Freq))+
  geom_bar(stat="identity") +
  theme(axis.text.x = element_text(angle=45,vjust=1,hjust=1))+
  labs(title="Nombre de descendants par mâle Barbarie",
          x ="Mâle Barbarie", y = "Fréquence")

me produit un graphe où les colonnes sont ordonnées par ID croissante du père et non par le nombre de descendants décroissant.

Comment puis-je changer l'ordre des barres ?
Merci.
Ingénieur de recherche INRAE Toulouse

Sébastien Rochette
Messages : 54
Enregistré le : 03 Juil 2020, 12:43
Contact :

Re: ordre des barres dans geom_bar

Messagepar Sébastien Rochette » 03 Aoû 2021, 09:30

Bonjour,

Pour gérer l'ordre des variables de type 'character' sur un graphique, vous devez les transformer en 'factor' ordonnés.
Vous pouvez le faire directement à l'appel du ggplot

Code : Tout sélectionner

ggplot(data = listper,aes(x=reorder(Var1, Freq), y=Freq))+
  geom_bar(stat="identity") +
  theme(axis.text.x = element_text(angle=45,vjust=1,hjust=1))+
  labs(title="Nombre de descendants par mâle Barbarie",
          x ="Mâle Barbarie", y = "Fréquence")
Sébastien
Dev, Consult, Formateur
ThinkR

Sébastien Rochette
Messages : 54
Enregistré le : 03 Juil 2020, 12:43
Contact :

Re: ordre des barres dans geom_bar

Messagepar Sébastien Rochette » 03 Aoû 2021, 09:32

Aussi, plutôt que de mettre le texte avec un angle sur l'axe des x, vous pouvez retourner le graphique.
De ce fait, le texte est à l'horizontal et ça fait moins mal au cou pour le lire :-)

Code : Tout sélectionner

ggplot(data = listper,aes(x=reorder(Var1, Freq), y=Freq))+
  geom_col() +
  coord_flip() +
  labs(title="Nombre de descendants par mâle Barbarie",
          x ="Mâle Barbarie", y = "Fréquence")



Notez que 'geom_col()' est la version courte de 'geom_bar(stat="identity")'
Sébastien
Dev, Consult, Formateur
ThinkR

herve chapuis
Messages : 110
Enregistré le : 05 Déc 2008, 15:26

Re: ordre des barres dans geom_bar

Messagepar herve chapuis » 03 Aoû 2021, 11:11

Merci à vous !
nickel
Ingénieur de recherche INRAE Toulouse


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité