Je voudrais faire des histogrammes en points appariés pour deux groupes sur une série de tests différents, les deux groupes étant représentés dans des directions opposées sur l'axe des ordonnées. En utilisant cet ensemble de données simples
dat <- data.frame(score = rnorm(100), group = rep(c("Control", "Experimental"), 50), test = rep(LETTERS[1:2], each=50))
Je peux faire des dotplots à facettes comme ceci
ggplot(dat, aes(score, fill=group)) + facet_wrap(~ test) + geom_dotplot(binwidth = 1, dotsize = 1)
mais je veux que les points de contrôle soient dirigés vers le bas plutôt que vers le haut. En utilisant cette question et cette réponse je peux faire une version de l'histogramme qui ressemble plus ou moins à ce que je veux.
ggplot() +
geom_histogram(data=subset(dat, group=="Experimental"), aes(score, fill="Experimental", y= ..count..)) +
geom_histogram(data=subset(dat, group=="Control"), aes(score, fill="Control", y= -..count..)) +
scale_fill_hue("Group")
mais maintenant le facettage a disparu. Je sais que je pourrais faire le facettage manuellement en utilisant la fonction grid.arrange
mais cela serait laborieux (mon jeu de données actuel comporte de nombreux tests, pas seulement 2). Existe-t-il une solution plus élégante ?
Deux questions complémentaires :
-
geom_histogram
me donne un avertissement qui dit "Stacking not well defined when ymin != 0". Quelqu'un sait-il à quel point c'est "mal défini" ? En d'autres termes, est-ce que je dois m'en préoccuper ? - Je préférerais utiliser dotplot au lieu d'histogramme, mais l'inversion ne semble pas fonctionner pour dotplot. Comment cela se fait-il ? Avez-vous une idée de la façon de la faire fonctionner ?
Merci d'avance !