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: