在 R 中并排绘制多组箱线图

发布于 2024-12-09 04:21:00 字数 497 浏览 0 评论 0原文

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

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

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

非常感谢任何指点,

伊恩

I am trying to plot two box-plots in the same plot, each within the same category.
I can generate the boxplots individually, but am stumped when I try to get them onto the same graph.

Here is what I have so far:

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))

This plot results in 6 boxplots, first 3 for a, then 3 for b.

Is there a trick/simple option that I am missing that will give me
first value for a and b, then second and finally the third set of values, all plotted in such a way there are is only three ticks on the x-axis, one for each of the sets?

Any pointers greatly appreciated,

Iain

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最好是你 2024-12-16 04:21:00
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。

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)

Note the ylim = range(a, b) parameter. The plot scale is determined by the first command, but if b contained values out of range of values in a (not in this case, but try to swap a and b), they would lie out of the plot. That's why in general you should specify the ylim here.

You can also set tick = FALSE in the axis() command, I think it is nicer.
If you don't like the space between the groups, use 0:2*2 instead of 0:2*3, and change the xlim appropriatelly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文