varias superponer studio modificar los lineas graficos grafico graficas ggplot escala ejes como cambiar barras r ggplot2 histogram

studio - superponer graficas en r ggplot



NormalizaciĆ³n del eje y en histogramas en R ggplot a proporciĆ³n por grupo (1)

Mi pregunta es muy similar a Normalizar el eje y en los histogramas en R ggplot a la proporción , excepto que tengo dos grupos de datos de diferente tamaño, y me gustaría que cada proporción sea relativa al tamaño de su grupo en lugar del tamaño total.

Para hacerlo más claro, digamos que tengo dos conjuntos de datos en un marco de datos:

dataA<-rnorm(100,3,sd=2) dataB<-rnorm(400,5,sd=3) all<-data.frame(dataset=c(rep(''A'',length(dataA)),rep(''B'',length(dataB))),value=c(dataA,dataB))

Puedo trazar las dos distribuciones junto con:

ggplot(all,aes(x=value,fill=dataset))+geom_histogram(alpha=0.5,position=''identity'',binwidth=0.5)

y en lugar de la frecuencia en el eje Y puedo tener la proporción con:

ggplot(all,aes(x=value,fill=dataset))+geom_histogram(aes(y=..count../sum(..count..)),alpha=0.5,position=''identity'',binwidth=0.5)

Pero esto da la proporción relativa al tamaño total de los datos (500 puntos aquí): ¿es posible tenerlo en relación con el tamaño de cada grupo?

Mi objetivo aquí es hacer posible comparar visualmente la proporción de valores en un intervalo dado entre A y B, independientemente de su tamaño respectivo. ¡Las ideas que difieren de mi original también son bienvenidas!

¡Gracias!


¿Me gusta esto? [Editado basado en el comentario de OP]

ggplot(all,aes(x=value,fill=dataset))+ geom_histogram(aes(y=0.5*..density..), alpha=0.5,position=''identity'',binwidth=0.5)

El uso de y=..density.. escala los histogramas de modo que el área debajo de cada uno sea 1, o sum(binwidth*y)=1. Como resultado, y = binwidth*..density.. para que y represente la fracción del total en cada bin. En tu caso, binwidth=0.5 .

En mi opinión, esto es un poco más fácil de interpretar:

ggplot(all,aes(x=value,fill=dataset))+ geom_histogram(aes(y=0.5*..density..),binwidth=0.5)+ facet_wrap(~dataset,nrow=2)