Ou placer la fonction dodge dans Ggplot2

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

jeaneudes trihan
Messages : 18
Enregistré le : 26 Juin 2018, 06:23

Ou placer la fonction dodge dans Ggplot2

Messagepar jeaneudes trihan » 20 Oct 2021, 16:25

Bonjour à tous,

Encore une fois, question probablement triviale mais je bloque depuis 30 min et je ne trouve pas de réponse sur le forum.

Avec un code ggplot2 pour faire un bar-plot "simple" :

Code : Tout sélectionner

ggplot(lp2) +
 aes(x = delta.tbi.cat, fill = groupe) +
 geom_bar() +
 scale_fill_hue() +
 labs(x = "Time difference in TBI") +
 theme_minimal() +
 facet_wrap(vars(groupe))


Jarrive à un résultat équivalent à ceci : Image

Or, j'aimerais accoler les barres pour le même groupe : Image

Pour cela, j'imagine que les fonctions dodge ou position_dodge() / position_dodge2() sont nécessaires mais impossibles de savoir ou les rajouter dans mon code précédent.

Une autre solution serait d'utiliser un code comme celui ci :

Code : Tout sélectionner

ggplot(lp2, aes(x = delta.tbi.cat, fill = groupe)) +
   geom_bar(stat="identity", position = "dodge2")


Mais la fonction ne le permet pas car il me manque l'élément y. (pour mon exemple, je souhaite que l'axe y soit un "count" du nombre de cas de la fonction factor (delta.tbi.cat).

Si vous souhaitez que je fasse un code reproductible, n'hésitez à me dire, mais j'ai pensé que cela n'était pas indispensable pour ce sujet là car explicite avec les images. Mais je peux en faire un en cas de besoin.

En vous remerciant par avance pour votre aide,
Cordialement

jeaneudes trihan
Messages : 18
Enregistré le : 26 Juin 2018, 06:23

Re: Ou placer la fonction dodge dans Ggplot2

Messagepar jeaneudes trihan » 20 Oct 2021, 18:00

Bon, j'ai craqué : voilà un code reproductible

Code : Tout sélectionner

library(data.table)

df2 <- data.frame(x=c("0.15","0.12","0.11","0.26","0.22","0.16","0,17", "0.18","0.15","0.15","0.29","0.27","0.20","0,18"),y=c("A","A","A","A","A","A","A", "B", "B", "B", "B", "B", "B", "B"))
df2$x <- as.numeric(df2$x)
df2$y <- factor(df2$y)

library (ggplot2)

ggplot(df2) +
 aes(x = x, fill = y) +
 geom_histogram(binwidth = 0.05) +
 scale_fill_hue() +
 theme_minimal() +
 facet_wrap(vars(y))


Quelqu'un peut - il m'aider pour la fonction dodge ou position_dodge ?

Bonne soirée à tous,

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

Re: Ou placer la fonction dodge dans Ggplot2

Messagepar Mickael Canouil » 20 Oct 2021, 18:07

Bonjour,

je vous recommande la lecture de la documentation, en particulier l'argument sobrement nommé "position" de geom_histogram() ou encore les exemples de la fonction geom_bar() que vous utilisez dans votre premier message.

https://ggplot2.tidyverse.org/reference ... q=position
https://ggplot2.tidyverse.org/reference ... q=position

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

jeaneudes trihan
Messages : 18
Enregistré le : 26 Juin 2018, 06:23

Re: Ou placer la fonction dodge dans Ggplot2

Messagepar jeaneudes trihan » 20 Oct 2021, 22:14

Bonjour,

Merci pour votre réponse.
J'avais effectivement vu cette documentation utile, mais au vu de votre réponse, il y a définitivement quelque chose qui m'échappe.

En reprenant mon code précédent avec geom_histogram, j'en avais conclu la chose suivante :

Code : Tout sélectionner

ggplot(df2) +
 aes(x = x, fill = y) +
 geom_histogram(binwidth = 0.05, position = "dodge") +
 scale_fill_hue() +
 theme_minimal() +
 facet_wrap(vars(y))

Mais sans succès.

Mes essais suivants n'ont pas été plus fructueux :

Code : Tout sélectionner

geom_histogram(position = position_dodge)

ou

Code : Tout sélectionner

 geom_histogram(binwidth = 0.05) +
    position_dodge2()

ou

Code : Tout sélectionner

geom_histogram(binwidth = 0.05) +
    position_dodge()


Cordialement,

jeaneudes trihan
Messages : 18
Enregistré le : 26 Juin 2018, 06:23

Re: Ou placer la fonction dodge dans Ggplot2

Messagepar jeaneudes trihan » 20 Oct 2021, 22:36

Re-bonjour,

Excusez moi. Je viens de comprendre, c'est la fonction facet_wrap qui fout tout en l'air.

Désolé pour le dérangement.

Merci encore pour la réponse.

Cordialement

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

Re: Ou placer la fonction dodge dans Ggplot2

Messagepar Mickael Canouil » 21 Oct 2021, 13:33

Si vous avez solutionner votre problème tant mieux.
Cela dit, pour l'usage de la fonction position_, je ne peux que douter de votre lecture de la documentation.
Dans l'aide de geom_bar, au niveau des nombreux exemples, je cite:
# If you need to flip the order (because you've flipped the orientation)
# call position_stack() explicitly:

Code : Tout sélectionner

ggplot(mpg, aes(y = class)) +
 geom_bar(aes(fill = drv), position = position_stack(reverse = TRUE)) +
 theme(legend.position = "top")

position
Position adjustment, either as a string, or the result of a call to a position adjustment function.

Difficile de ne pas comprendre comment utiliser les fonctions position_
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité