我试图在同一个地块中绘制两个箱形图,每个都在同一类别中。 我可以单独生成箱图,但是当我试图将它们放到同一个图表上时我会感到难过。
这是我到目前为止所做的:
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轴上只有三个刻度,每个刻度一个?
任何指针都非常感谢,
伊恩
答案 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。