R:我如何将两个箱形图彼此相邻,保持两个相同的y范围?

hto*_*que 17 r plotmath

假设我有两个数据集,一个具有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)
Run Code Online (Sandbox Code Playgroud)

但这只会保留第一个图的y范围并且也会挤压两个图,而我希望它们是方形的.

有任何想法吗?

Ari*_*man 36

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)
Run Code Online (Sandbox Code Playgroud)

基础图形图

您可能还想考虑使用网格图形来实现此目的,方法是使用latticeggplot2包.

这是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)
Run Code Online (Sandbox Code Playgroud)

GGPLOT2

在格子中:

# Using lattice
library(lattice)
bwplot(~ val|sub.type+d.type ,d)
Run Code Online (Sandbox Code Playgroud)

格子图

请注意基于网格的解决方案如何使您不必指定限制; 你指定结构,软件完成其余的工作.