2011-07-21 11 views
17

Załóżmy, że mam dwa zbiory danych, jeden z zakresem y [min0: max0], a drugi z zakresem y [min1: max1]. W jaki sposób można umieścić oba wykresy pudełkowe na jednym wykresie obok siebie z rozsądnym zakresem y [min (min0, min1): max (max0, max1)]?R: Jak umieścić dwie pola obok siebie, zachowując ten sam zakres Y dla obu?

Oto, co starałem:

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) 

Ale to zachowa tylko pierwszy działek y zakres, a także wycisnąć zarówno działek natomiast chciałbym je do kwadratu.

Wszelkie pomysły?

+1

Twój kod nie jest powtarzalny. Zobacz http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

@ RomanLuštrik Dzięki za podpowiedź; teraz jest. – htorque

Odpowiedz

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

Można też pomyśleć o sposób to zrobić przy użyciu grafiki siatki, albo przez pakiety lattice lub ggplot2.

Oto jedna próba w 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

A w kratę:

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

lattice plot

Uwaga, w jaki sposób rozwiązania siatki opartej trzymać cię z konieczności określić limity; określasz strukturę, a oprogramowanie robi resztę.

+0

Hmpf, prawdopodobnie czytałem nad argumentem ylim boxplota. Dzięki! – htorque

+0

Chciałbym móc dać ci +1 +1 za obszerną odpowiedź, jeszcze raz dziękuję! – htorque

+0

Nah, * naprawdę * obszerna odpowiedź obejmowałaby plasterki (siatkę), estetykę (ggplot2) i inne sposoby na to, aby grafika w oparciu o siatkę wyglądała ładniej :-) –

Powiązane problemy