首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中合并来自不同数据的两个盒子图

在R中合并来自不同数据的两个盒子图
EN

Stack Overflow用户
提问于 2015-05-28 15:57:11
回答 1查看 1.7K关注 0票数 2

我想在相同的方框图中添加一个来自不同数据帧的附加框图。我有第一个数据,它有一个连续变量,由一个5级的因子变量组成。我用下面的代码创建一个方格图

代码语言:javascript
运行
复制
boxplot (mydata$height~ mydata$group, xlab="", ylab="", ylim=c(120, 260),  col= c("chartreuse1", "gray87", "gray87", "gray87", "gray87"), las=1)

现在,我需要在相同的图中添加另一个表示data.frame范围的normality.My的盒子图,第一次尝试添加以下代码:

代码语言:javascript
运行
复制
boxplot (control$height, add=TRUE)

第一个数据帧的vars数据如下:

代码语言:javascript
运行
复制
Height         group
1   160.5401     IC
2   152.1736     IC
6   135.2394     IC
7   138.8716     IC
8   150.3041     IC
9   163.8295     IC
10  141.1793     IC
11  152.1263     IC
12  175.3540     IC
13  133.9237     IP
14  131.2115     IP
15  134.8984     IP
16  134.2888     IP
17  132.0721     IP
18  131.6538     IP
19  134.0276     IP
20  140.5256     IP
21  135.6092     IP
24  141.6863     IP
25  165.4456     TC
26  238.7608     TC
27  162.2336     TC
28  197.7274     TC
29  163.0832     TC

然而,控制盒被添加到第一个组的上方,它是一个混乱的.

任何帮助都将不胜感激。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-28 16:15:45

最简单的可能是使用at参数,尽管它至少有一个小的“故障”:

代码语言:javascript
运行
复制
## using your "mydata"
boxplot(Height ~ group, data=mydata,
        xlim=c(0.5, 1.5 + length(unique(mydata$group))))
boxplot(mydata$Height, at=1 + length(unique(mydata$group)), add=TRUE)

(在发现超过3个级别的情况下,我对xlim进行了广义设置。)

问题是第四个盒子的宽度和其他的不一样。您可以在这两个调用中使用boxwex来弥补这一点(不幸的是,对两个boxwex使用相同的值不会给出相同的宽度)。

编辑

boxplot设置x轴范围从1到盒图的数目,由您的~ group在公式语法中定义。它取这个范围,并在每个方向将其扩展0.5。在您的三个组的示例中,它通常从0.5到3.5之间,如:

代码语言:javascript
运行
复制
par('usr')
## [1]  0.38  3.62  9.46 34.84

X值从0.38到3.62 (y值从9.46到34.84)。(默认情况下,R在两个方向上都扩展了4%,因此0.5 - 0.4*(3.5-0.5)3.5 + 0.4*(3.5-0.5) (或者更简洁地说是c(0.5, 3.5) + c(-1, 1)*0.04*(3.5-0.5))。(请参阅?par,查找xaxs以获得参考。)

由于您想要再添加一个框图,我们必须强制boxplot比通常需要的更宽。我可以使用硬编码的xlim=c(0, 4.5),但我不喜欢输入“魔术常量”,所以我根据数据对其进行了概括。

  1. length(unique(mydata$group))提供组数;
  2. 在此加上1,以说明额外的方框图;及
  3. 在此基础上再添加0.5,以使其再增加一点(占方框宽度)。

我们不需要在第二个调用中设置它,因为boxplot只在add=FALSE (默认)并且正在创建一个新框架时设置轴。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30511584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档