web-dev-qa-db-fra.com

R: Comment puis-je mettre deux boîtes à moustaches côte à côte, en conservant la même plage y pour les deux?

Disons que j'ai deux ensembles de données, l'un avec la plage y [min0: max0] et l'autre avec la plage y [min1: max1]. Comment peut-on placer les deux boîtes à moustaches dans une même parcelle l'une à côté de l'autre avec une plage de Y raisonnable [min (min0, min1): max (max0, max1)]?

Voici ce que j'ai essayé:

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)

Mais cela ne gardera que les premières parcelles y et réduira également les deux parcelles alors que je voudrais qu'elles soient carrées.

Des idées?

17
htorque
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

Vous voudrez peut-être également réfléchir à un moyen de le faire en utilisant des graphiques de grille, soit par le lattice ou ggplot2 paquets.

Voici une tentative dans 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

Et en treillis:

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

lattice plot

Notez comment les solutions basées sur la grille vous empêchent d'avoir à spécifier des limites; vous spécifiez la structure et le logiciel fait le reste.

37
Ari B. Friedman