varias superponer studio los histogramas histograma graficos graficas ggplot escala ejes como cambiar avanzados r ggplot2 colors histogram probability-density

superponer - Creando un histograma de densidad en ggplot2?



superponer graficas en r ggplot (2)

Manualmente, agregué colores a tus barras de percentiles. A ver si esto funciona para usted.

library(ggplot2) ggplot(df, aes(x=vector)) + geom_histogram(breaks=breaks,aes(y=..density..),colour="black",fill=c("red","orange","yellow","lightgreen","green","darkgreen","blue","darkblue","purple","pink")) + geom_density(aes(y=..density..)) + scale_x_continuous(breaks=c(-3,-2,-1,0,1,2,3)) + ylab("Density") + xlab("df$vector") + ggtitle("Histogram of df$vector") + theme_bw() + theme(plot.title=element_text(size=20), axis.title.y=element_text(size = 16, vjust=+0.2), axis.title.x=element_text(size = 16, vjust=-0.2), axis.text.y=element_text(size = 14), axis.text.x=element_text(size = 14), panel.grid.major = element_blank(), panel.grid.minor = element_blank())

Quiero crear la siguiente gráfica de densidad de histograma con ggplot2 . En la forma "normal" (paquetes base) es realmente fácil:

set.seed(46) vector <- rnorm(500) breaks <- quantile(vector,seq(0,1,by=0.1)) labels = 1:(length(breaks)-1) den = density(vector) hist(df$vector, breaks=breaks, col=rainbow(length(breaks)), probability=TRUE) lines(den)

Con ggplot he llegado a esto hasta ahora:

seg <- cut(vector,breaks, labels=labels, include.lowest = TRUE, right = TRUE) df = data.frame(vector=vector,seg=seg) ggplot(df) + geom_histogram(breaks=breaks, aes(x=vector, y=..density.., fill=seg)) + geom_density(aes(x=vector, y=..density..))

Pero la escala "y" tiene la dimensión incorrecta. He notado que la siguiente ejecución obtiene la escala "y" correcta.

ggplot(df) + geom_histogram(breaks=breaks, aes(x=vector, y=..density.., fill=seg)) + geom_density(aes(x=vector, y=..density..))

Simplemente no lo entiendo. y=..density.. está ahí, esa debería ser la altura. Entonces, ¿por qué en la tierra mi escala se modifica cuando trato de llenarla?

Necesito los colores. Solo quiero un histograma donde los saltos y los colores de cada bloque se configuran direccionalmente de acuerdo con los colores de relleno predeterminados de ggplot.


fill=seg resultados en agrupación. En realidad, está obteniendo un histograma diferente para cada valor de seg . Si no necesitas los colores, puedes usar esto:

ggplot(df) + geom_histogram(breaks=breaks,aes(x=vector,y=..density..), position="identity") + geom_density(aes(x=vector,y=..density..))

Si necesita los colores, puede ser más fácil calcular los valores de densidad fuera de ggplot2.