4 votes

faire des histogrammes inversés et appariés

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)

faceted dotplot example

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")

paired, inverted histograms 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 :

  1. 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 ?
  2. 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 !

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