Superposition d'histogrammes avec ggplot2 dans R
Je suis nouveau sur R et j'essaie de tracer 3 histogrammes sur le même graphique. Tout a bien fonctionné, mais mon problème est que vous ne voyez pas où 2 histogrammes se chevauchent - ils ont l'air plutôt coupés: histogramme
Quand je fais des diagrammes de densité, cela semble parfait: chaque courbe est entourée d'une ligne de cadre noire, et les couleurs sont différentes où les courbes se chevauchent: densité
Quelqu'un peut-il me dire si quelque chose de similaire peut être réalisé avec les histogrammes de la 1ère image? C'est le code que j'utilise:
lowf0 <-read.csv (....)
mediumf0 <-read.csv (....)
highf0 <-read.csv(....)
lowf0$utt<-'low f0'
mediumf0$utt<-'medium f0'
highf0$utt<-'high f0'
histogram<-rbind(lowf0,mediumf0,highf0)
ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)
Merci d'avance pour tous les conseils utiles!
2 réponses
Votre code actuel:
ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)
Dit à ggplot
de construire un histogramme en utilisant toutes les valeurs de f0
, puis de colorer les barres de cet histogramme unique en fonction de la variable utt
.
Ce que vous voulez à la place est de créer trois histogrammes séparés, avec un mélange alpha afin qu'ils soient visibles l'un à travers l'autre. Donc, vous voulez probablement utiliser trois appels distincts à geom_histogram
, où chacun obtient son propre cadre de données et remplit:
ggplot(histogram, aes(f0)) +
geom_histogram(data = lowf0, fill = "red", alpha = 0.2) +
geom_histogram(data = mediumf0, fill = "blue", alpha = 0.2) +
geom_histogram(data = highf0, fill = "green", alpha = 0.2) +
Voici un béton exemple avec une sortie:
dat <- data.frame(xx = c(runif(100,20,50),runif(100,40,80),runif(100,0,30)),yy = rep(letters[1:3],each = 100))
ggplot(dat,aes(x=xx)) +
geom_histogram(data=subset(dat,yy == 'a'),fill = "red", alpha = 0.2) +
geom_histogram(data=subset(dat,yy == 'b'),fill = "blue", alpha = 0.2) +
geom_histogram(data=subset(dat,yy == 'c'),fill = "green", alpha = 0.2)
Qui produit quelque chose comme ceci:
Édité pour corriger les fautes de frappe; vous vouliez remplir, pas de couleur.
En utilisant les exemples de données de @joran,
ggplot(dat, aes(x=xx, fill=yy)) + geom_histogram(alpha=0.2, position="identity")
Notez que la position par défaut de geom_histogram
est " stack."
Voir "réglage de la position" de cette page: