2012-09-14 9 views
6

que tienen datos en el siguiente formato:Cómo trazar diagramas de caja 'múltiples' en una trama?

# repetition, packet, route, energy level 
    1, 1, 1, 10.0 
    1, 1, 2, 12.3 
    1, 1, 3, 13.8 
    1, 2, 1, 9.2 
    1, 2, 2, 10.1 
    1, 2, 3, 11.2 
    ... 
    50,99,3, 0.01 

Ahora, quiero crear una gráfica que muestra diagramas de caja por ruta por paquetes a través de todas las repeticiones. Entonces, por ejemplo, el eje x representaría los paquetes y el eje y el nivel de energía. El primer tic en el eje x mostraría tres diagramas de caja que contienen datos de tres subconjuntos

subset(data, data$packet == 1 & data$route == 1) 
    subset(data, data$packet == 1 & data$route == 2) 
    subset(data, data$packet == 1 & data$route == 3) 

y así sucesivamente. Estoy usando ggplot2 y me pregunto si tengo que crear cada vez que un diagrama de caja y tratar de agregarlos a uno o si hay una forma inteligente de hacer esto?

¡Gracias de antemano! M.

+2

'diagrama de caja (y ~ x)' hará de lado a lado diagramas de caja para una variable 'y', agrupados por los valores únicos para' x' pero, dado que esto es puramente una cuestión de programación, esto es fuera de tema aquí, así He votado cerrar y migrar a stackoverflow. – Macro

+0

Es un poco más complicado. No es sólo una variable y (energía) en comparación por x (ruta), sino también paquetes (?). –

Respuesta

8

Si está utilizando ggplot2, podrás hacer esto muy bien con facet_wrap, lo que puede crear varios diagramas de caja al lado del otro. Por ejemplo:

library(ggplot2) 
mydata = data.frame(x=as.factor(rep(1:2, 5, each=5)), y=rnorm(50), 
     division=rep(letters[1:5], each=10)) 

print(ggplot(mydata, aes(x, y)) + geom_boxplot() + facet_wrap(~division)) 

enter image description here

En el caso de su código, que parezca que en realidad puede ser que desee dividir por dos variables (que es un poco incierto). Si desea dividirlo por la ruta y luego por paquetes (como su ejemplo parece sugerir) que puede utilizar facet_grid:

print(ggplot(data, aes(repetition, energy.level)) + geom_boxplot() + facet_grid(route ~ packet)) 

Sin embargo, tenga en cuenta que, dado que tiene 99 paquetes de este terminaría siendo 99 gráficos amplia, por lo que es probable que desee probar un enfoque diferente.

Cuestiones relacionadas