Diagrama de caja con respecto a dos factores usando ggplot2 en R


13

Soy muy nuevo en R y en cualquier paquete en R. Miré la documentación de ggplot2 pero no pude encontrar esto. Quiero un diagrama de caja de variable boxthiscon respecto a dos factores f1y f2. Que se supone que tanto f1y f2son variables de factor y cada uno de ellos tiene dos valores y boxthises una variable continua. Quiero conseguir 4 diagramas de caja en un gráfico, cada uno correspondiente a una combinación de las posibles combinaciones que f1y f2puede tomar. Creo que usando la funcionalidad básica en R, esto puede hacerse por

> boxplot(boxthis ~ f1 * f2 , data = datasetname) 

Gracias de antemano por cualquier ayuda.


Proporcione datos de muestra para obtener respuestas precisas.
mpiktas

2
Es casi seguro que esta pregunta se ajuste mejor a stackoverflow.com, ya que aquí hay pocas estadísticas específicas.
richiemorrisroe

Respuestas:


23

Se me ocurren dos formas de lograr esto:

1. Cree todas las combinaciones de f1y f2fuera de la ggplotfunción

library(ggplot2)

df <- data.frame(f1=factor(rbinom(100, 1, 0.45), label=c("m","w")), 
                 f2=factor(rbinom(100, 1, 0.45), label=c("young","old")),
                 boxthis=rnorm(100))

df$f1f2 <- interaction(df$f1, df$f2)

ggplot(aes(y = boxthis, x = f1f2), data = df) + geom_boxplot()

ingrese la descripción de la imagen aquí

2. use color / relleno / etc.

ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + geom_boxplot()

ingrese la descripción de la imagen aquí


44
(+1) Me gusta el uso de interaction(). Cabe destacar que podemos especificar geom_boxplot(position = position_dodge(width = .9))agregar espacio adicional entre los diagramas de caja.
chl

1
También puede usar dodgeargumentos en la ggplotfunción -ggplot(aes(y = boxthis, x = f2, fill = f1, dodge=f1), data = df) + geom_boxplot()
Maciej

0

Aquí hay otra forma:

ggplot(datasetname) + boxplot(aes(x=as.factor(f1),y=boxthis)) + facet_wrap(~as.factor(f2), nrow=5)

Da algo como lo siguiente:

Diagrama de caja facetada

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.