2011-07-21 15 views
17

Digamos que tengo dos conjuntos de datos, uno con rango y [min0: max0] y el otro con rango y [min1: max1]. ¿Cómo se pueden poner ambos diagramas de cajas en un diagrama uno al lado del otro con un rango de y sanos [min (min0, min1): max (max0, max1)]?R: ¿Cómo pongo dos diagramas de cajas uno al lado del otro, manteniendo el mismo rango y para ambos?

Esto es lo que he intentado:

d0 <- matrix(rnorm(15), ncol=3) 
d1 <- matrix(rnorm(15), ncol=3) 

par(mfrow = c(1, 2)) 
boxplot(d0) 
usr <- par("usr") 
plot.new() 
par(usr = usr) 
boxplot(d1, add = TRUE) 

Pero eso sólo mantendrá las primeras parcelas y-rango y apretar ambas parcelas mientras que me gustaría que ser cuadrado.

¿Alguna idea?

+1

Tu código no es reproducible. Ver http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

@ RomanLuštrik Gracias por la pista; ahora es. – htorque

Respuesta

35
d0 <- matrix(rnorm(15), ncol=3) 
d1 <- matrix(rnorm(15), ncol=3) 

# Using base R graphics 
lmts <- range(d0,d1) 

par(mfrow = c(1, 2)) 
boxplot(d0,ylim=lmts) 
boxplot(d1,ylim=lmts) 

base graphics plot

También es posible que desee pensar en una manera de hacer esto usando gráficos de cuadrícula, ya sea por los lattice o ggplot2 paquetes.

Aquí hay un intento de ggplot2:

# Using ggplot2 
library(ggplot2) 
d <- data.frame(d.type=c(rep(0,15),rep(1,15)),sub.type=rep(c('A','B','C'),10),val=rnorm(30)) 

p <- ggplot(d, aes(factor(sub.type), val)) 
p + geom_boxplot() + facet_grid(. ~ d.type) 

ggplot2

Y en celosía:

# Using lattice 
library(lattice) 
bwplot(~ val|sub.type+d.type ,d) 

lattice plot

Nota cómo las soluciones basadas en la red le impiden tener que para especificar límites; usted especifica la estructura y el software hace el resto.

+0

Hmpf, probablemente he leído el argumento ylim de boxplot. ¡Gracias! – htorque

+0

Ojalá pudiera darte otro +1 por la extensa respuesta, ¡gracias de nuevo! – htorque

+0

Nah, una respuesta * realmente * extensa habría incluido rebanadas (celosía), estética (ggplot2), y otras formas de hacer que los gráficos basados ​​en cuadrícula se vean más bonitos :-) –

Cuestiones relacionadas