10

我试图在同一个图中绘制两个箱形图,每个都在同一类别中。我可以单独生成箱线图,但是当我尝试将它们放在同一个图表上时我很难过。

这是我到目前为止所拥有的:

a<-matrix(nrow=100,ncol=3,data=runif(300,max=2))
b<-matrix(nrow=100,ncol=3,data=runif(300,max=1))
colnames(a)<-c("case 1","case 2","case 3")
colnames(b)<-c("case 1","case 2","case 3")
boxplot(cbind(a,b))

该图产生 6 个箱线图,前 3 个用于 a,然后 3 个用于 b。

是否有一个我缺少的技巧/简单选项会给我a和b的第一个值,然后是第二组,最后是第三组值,所有这些都以这样的方式绘制,x轴上只有三个刻度,每组一个?

非常感谢任何指针,

伊恩

4

1 回答 1

8
boxplot(a, at = 0:2*3 + 1, xlim = c(0, 9), ylim = range(a, b), xaxt = "n")
boxplot(b, at = 0:2*3 + 2, xaxt = "n", add = TRUE)
axis(1, at = 0:2*3 + 1.5, labels = colnames(a), tick = TRUE)

注意ylim = range(a, b)参数。绘图比例由第一个命令确定,但如果 b 包含超出 a 值范围的值(不是在这种情况下,而是尝试交换 a 和 b),它们将位于绘图之外。这就是为什么通常您应该在此处指定 ylim 的原因。

你也可以在axis()命令中设置tick = FALSE,我觉得这样更好。如果您不喜欢组之间的空间,请使用0:2*2代替0:2*3,并适当地更改 xlim。

于 2011-10-12T10:59:44.843 回答