在R中并排绘制几组箱形图

时间:2011-10-12 10:17:43

标签: r plot boxplot

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

这是我到目前为止所做的:

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轴上只有三个刻度,每个刻度一个?

任何指针都非常感谢,

伊恩

1 个答案:

答案 0 :(得分: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。