studio - superponer graficas en r ggplot
ggplot gráficas de proporciones de observaciones dentro de las categorÃas (2)
Entiendo si esto no es realmente lo que estás buscando, pero encontré tu descripción de lo que querías muy confusa hasta que me di cuenta de que simplemente estabas tratando de visualizar tus datos de una manera que me parecía antinatural.
Si alguien me pidiera que produjera un gráfico con las proporciones dentro de cada categoría, probablemente recurriría a un gráfico de barras segmentado:
ggplot(df,aes(x = cat2,fill = cat1)) +
geom_bar(position = "fill")
Tenga en cuenta que el eje y registra proporciones, no cuenta, como usted quería.
Estoy buscando consejos sobre mejores formas de trazar la proporción de observaciones en varias categorías.
Tengo un marco de datos que se ve así:
cat1 <- c("high", "low", "high", "high", "high", "low", "low", "low", "high", "low", "low")
cat2 <- c("1-young", "3-old", "2-middle-aged", "3-old", "2-middle-aged", "2-middle-aged", "1-young", "1-young", "3-old", "3-old", "1-young")
df <- as.data.frame(cbind(cat1, cat2))
En el ejemplo aquí, quiero trazar la proporción de cada grupo de edad que tiene el valor "alto" y la proporción de cada grupo de edad que tiene el valor "bajo". En términos más generales, quiero trazar, para cada valor de categoría 2 , el porcentaje de observaciones que caen en cada uno de los niveles de la categoría 1.
El siguiente código produce el resultado correcto, pero solo contando y dividiendo manualmente antes de trazar. ¿Hay una buena manera de hacerlo sobre la marcha dentro de ggplot?
library(plyr)
count1 <- count(df, vars=c("cat1", "cat2"))
count2 <- count(df, "cat2")
count1$totals <- count2$freq
count1$pct <- count1$freq / count1$totals
ggplot(data = count1, aes(x=cat2, y=pct))+
facet_wrap(~cat1)+
geom_bar()
Esta pregunta previa de stackoverflow ofrece algo similar, con el siguiente código:
ggplot(mydataf, aes(x = foo)) +
geom_bar(aes(y = (..count..)/sum(..count..)))
Pero no quiero "sum (.. count ..)" - que da la suma del recuento de todos los bins - en el denominador; más bien, quiero la suma del recuento de cada una de las categorías "cat2". También estudié la documentación de stat_bin .
Agradecería cualquier consejo y sugerencia sobre cómo hacer que esto funcione.
Esto puede ser un poco tarde para ti y no involucra ggplot, PERO:
Creo que los mosaicplots son el camino a seguir para visualizar la interacción de dos factores:
cat1 <- c("high", "low", "high", "high", "high", "low", "low", "low", "high", "low", "low")
cat2 <- c("1-young", "3-old", "2-middle-aged", "3-old", "2-middle-aged", "2-middle-aged", "1-young", "1-young", "3-old", "3-old", "1-young")
df <- as.data.frame(cbind(cat1, cat2))
mosaicplot(cat2 ~ cat1, data = df, col = c(lightskyblue2'', ''tomato''))
En esta gráfica, las casillas para cada par de valores se escalan según el número de observaciones en esa categoría. Puede proporcionar un vector de color para ayudar con la visualización.