histogramme cumulé GGplot

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

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

histogramme cumulé GGplot

Messagepar Simon Paul » 23 Avr 2019, 13:40

Bonjour,
Je souhaite réaliser un diagramme cumulé avec deux critère pour l’axe des ordonnées. Je souhaite avoir pour chaque molécule (critère 1), une barre cumulé pour chaque période (critère 2).

Structure de ma base

Code : Tout sélectionner

'data.frame':   189 obs. of  4 variables:
 $ Molecule: Factor w/ 24 levels "2,4-D","AMPA",..: 6 6 6 1 2 12 1 4 2 4 ...
 $ Periode : Factor w/ 3 levels "1","2","3": 2 1 3 2 1 3 3 1 2 2 ...
 $ variable: Factor w/ 3 levels "Freq_Det_10",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ value   : num  0.866 1.282 0.641 8.442 53.846 ...


code pour faire mon graphique pour une seule période. J'obtiens une barre cumulé pour chaque molécule. Je cherche maintenant a avoir pour chaque molécule une barre cumulée pour chaque période (3 périodes).

Code : Tout sélectionner

g<-ggplot(mdata, aes(x = Molecule, y = value, fill = variable)) +
  geom_bar(stat = "identity")+
  coord_flip()+
  scale_y_continuous(breaks=c(0,20, 40, 60, 80, 100))+
  scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
  theme_minimal() 
  g
 



Merci d'avance pour votre aide,
Simon.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogramme cumulé GGplot

Messagepar Mickael Canouil » 23 Avr 2019, 14:25

Bonjour,

A priori (a défaut d'avoir un code reproductible), je dirais qu'il vous suffit d'ajouter une "aesthetic" (group, colour, ...) à votre ggplot.

Code : Tout sélectionner

ggplot(mdata, aes(x = Molecule, y = value, fill = variable, group = Periode))


Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

Re: histogramme cumulé GGplot

Messagepar Simon Paul » 23 Avr 2019, 15:12

Merci pour votre réponse,
Mais ça n'a pas l'air de fonctionner. Il me cumule les trois périodes dans une même barre cumulée pour chaque molécule.
Voilà quelque précision sur mon code. Je ne sais pas s’il sera reproductible ou non ;) (je suis novice et ça se voit :))

Base de données initiale exemple pour une molécule "Glob"

Code : Tout sélectionner

Molecule              Periode                  Freq_Det_1                Freq_Det_2          Freq_Det_3
Molécule1                 1                      8.441558442                0.649350649              6.2
Molécule1                 2                      5.769230769                1.282051282              NA
Molécule1                 3                     10.66666667                0.666666667              3.4

Modification de la structure afin de faire un histogramme cumulé

Code : Tout sélectionner

mdata <- melt(Glob, id=c("Molecule","Periode"))


Code pour le graphique

Code : Tout sélectionner

g<-ggplot(mdata, aes(x = Molecule, y = value, group = Periode , fill = variable)) +
  geom_bar(stat = "identity")+
  coord_flip()+
  scale_y_continuous(breaks=c(0,20, 40, 60, 80, 100))+
  scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))+
  theme_minimal() 
g


Merci d'avance pour votre aide.

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogramme cumulé GGplot

Messagepar Mickael Canouil » 23 Avr 2019, 16:21

Regardez du côté du paramètre "position" du geom_ que vous utilisez.
Mickaël
mickael.canouil.fr | rlille.fr

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

Re: histogramme cumulé GGplot

Messagepar Simon Paul » 23 Avr 2019, 16:50

Merci beaucoup ça fonctionne !!
J’ai encore une petite question... pensez vous qu’il est possible sur mon axe des ordonnées d’afficher à la fois le nom de la molécule mais également de la période ?

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

Re: histogramme cumulé GGplot

Messagepar Simon Paul » 23 Avr 2019, 16:56

... Et aussi de définir un ordre.
Afficher toujours période 1, puis 2 et enfin la période 3
Afficher toujours Freq_Det_1 puis Freq_Det_2 …

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: histogramme cumulé GGplot

Messagepar Mickael Canouil » 24 Avr 2019, 07:44

Comme vous utilisez des facteurs, il vous suffit de changer l'ordre des niveaux. (?factor)
Pour ce qui est de l'affichage des axes (et de façon générale pour toutes les aesthetic de ggplot2), regardez les fonctions "scale_", ici ce sera scale_x_* ou scale_y_*
Mickaël
mickael.canouil.fr | rlille.fr

Simon Paul
Messages : 10
Enregistré le : 26 Fév 2019, 11:35

Re: histogramme cumulé GGplot

Messagepar Simon Paul » 28 Avr 2019, 16:55

J’ai regardé mais ne trouve pas la solution.
Je cherche à avoir cela :

Code : Tout sélectionner

                       Periode 1   (la barre cumulée)
Molécule 1             Periode 2 (la barre cumulée)
                       Periode 3 (la barre cumulée)

                       Periode 1   (la barre cumulée)
Molécule 2             Periode 2 (la barre cumulée)
                       Periode 3 (la barre cumulée)

Tout s’affiche comme il faut. J’aimerai juste faire apparaitre sur l’axe des abscisses les deux informations. Groupe principal =nom de la molécule repartie en trois sous-groupes= nom de la période( periode1, periode2, periode 3).
Merci d'avance pour votre aide!


Retourner vers « Questions en cours »

Qui est en ligne

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