Р: Как мне поставить два прямоугольника рядом друг с другом, сохраняя одинаковый диапазон y для обоих? - PullRequest
17 голосов
/ 21 июля 2011

Допустим, у меня есть два набора данных, один с диапазоном y [min0: max0], а другой с диапазоном y [min1: max1].Как можно поместить оба прямоугольника на одном графике рядом друг с другом с помощью разумного y-диапазона [min (min0, min1): max (max0, max1)]?

Вот что я пробовал:

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)

Но это сохранит только первые графики y-диапазона, а также сожмет оба графика, тогда как я хотел бы, чтобы они были квадратными.

Есть идеи?

1 Ответ

35 голосов
/ 21 июля 2011
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

Вы также можете подумать о том, как сделать это, используя сеточную графику, либо с помощью пакетов lattice или ggplot2.

Вот одна попытка в 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

А в решетке:

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

lattice plot

Обратите внимание, как решения на основе сетки не дают вам возможности устанавливать ограничения; Вы указываете структуру, а программное обеспечение делает все остальное.

...