【问题标题】:R: How do I put two box plots next to each other, keeping same y-range for both?R:如何将两个箱形图并排放置,同时保持相同的 y 范围?
【发布时间】:2011-10-10 02:25:37
【问题描述】:

假设我有两个数据集,一个具有 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 范围,并且还会挤压两个图,而我希望它们是方形的。

有什么想法吗?

【问题讨论】:

标签: r plotmath


【解决方案1】:
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)

您可能还想通过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)

在格中:

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

请注意基于网格的解决方案如何让您不必指定限制;您指定结构,其余的由软件完成。

【讨论】:

  • Hmpf,我可能已经阅读了 boxplot 的 ylim 参数。谢谢!
  • 我希望我能再给你一个 +1 以获得广泛的答案,再次感谢!
  • 不,一个真正广泛的答案将包括切片(晶格)、美学(ggplot2)和其他使基于网格的图形看起来更漂亮的方法:-)
  • 呃,那是带状疱疹而不是切片。
  • lmts 可以通过以下方式更简洁地计算:lmts &lt;- range(d0,d1)
猜你喜欢
  • 2021-12-04
  • 2022-01-25
  • 2011-03-01
  • 2015-11-26
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
相关资源
最近更新 更多