superponer - Superposición de histogramas con ggplot2 en R
superponer graficas en r (2)
Soy nuevo en R y estoy tratando de trazar 3 histogramas en el mismo gráfico. Todo funcionó bien, pero mi problema es que no ves dónde se superponen 2 histogramas: parecen más bien recortados: Histogram
Cuando hago gráficos de densidad, se ve perfecto: cada curva está rodeada por una línea de marco negro, y los colores se ven diferentes donde las curvas se superponen: Diagrama de densidad
¿Puede alguien decirme si se puede lograr algo similar con los histogramas en la primera imagen? Este es el código que estoy usando:
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)
Gracias de antemano por cualquier consejo útil!
Tu código actual:
ggplot(histogram, aes(f0, fill = utt)) + geom_histogram(alpha = 0.2)
le está diciendo a ggplot
que construya un histograma usando todos los valores en f0
y luego coloree las barras de este único histograma de acuerdo con la variable utt
.
Lo que quiere en su lugar es crear tres histogramas separados, con mezcla alfa para que sean visibles entre sí. Entonces, probablemente desee utilizar tres llamadas separadas a geom_histogram
, donde cada una obtiene su propio marco de datos y relleno:
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) +
Aquí hay un ejemplo concreto con algunos resultados:
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)
que produce algo como esto:
Editado para corregir errores tipográficos; Querías llenar, no color.
Utilizando datos de muestra de @ joran,
ggplot(dat, aes(x=xx, fill=yy)) + geom_histogram(alpha=0.2, position="identity")
tenga en cuenta que la posición predeterminada de geom_histogram
es "pila".
ver "ajuste de posición" de esta página: