1

我正在尝试使用我的特定数据集在 R 中创建一个蜂群图。我不是 R 专家。我的数据如下所示:

group    p1    p2    p3    p4
A       .01    .1    n/a   1.9
A       2.0    n/a   n/a   .05
A       n/a    n/a   n/a   .3
B       .05    .1    1.0   .5
B       1.0    .02   .054  .01
B       .05    n/a   3.1   .8

我想看到的是带有 p1、p2、p3 和 p4 列的蜂群图,并且对于每一列,它显示不同的组,由不同的组着色(红色表示“A”,蓝色表示“B”例子)。在 y 轴上,我想查看实际的数据点/测量值。

如果这样更容易,我也可以按组将数据分开 - 所以会有一个“A”表和一个“B”表,我可以在同一个图上重叠。

我只是不知道如何使列对应于 p1、p2 等,并在给定我的输入数据的情况下覆盖列中的不同测量值。

4

1 回答 1

2

我不太确定您的数据如何,因为您没有提供我可以使用的示例数据。使用“n/a”作为缺失值指示符,您可能仍然会遇到一些麻烦..

无论如何,这是一种实现方式

让我们生成一个示例数据集,类似于您的:

 set.seed(3)
x <- data.frame(p1 = rnorm(5,10,4), p2 = rnorm(5, 40, 10),
            p3=rnorm(5,1,3), p4=rnorm(5,6,4),
            group=sample(c("A", "B"), 5, replace = TRUE))

请注意,组合变量在第五列中。现在我们可以通过以下方式轻松生成蜂群图(因为它自动按列分组):

library("beeswarm")
beeswarm(x[,-5])

第 5 列被省略,因为它包含我们的分组并且没有数据。

现在来看看颜色。我能想到的最简单的方法是使用pwcolbeeswarm 函数的参数。为此,我们首先必须创建一个颜色矢量。可能有更好的方法来完成这一切,但这很有效。

从第 5 列创建颜色向量,当组为“A”时包含 2,当组不是 A 时包含 3。2 和 3 是任意选择的;这些是颜色的值(此处为红色和绿色)。col可以选择任何喜欢的值。

colors=ifelse(x$group=="A", 2,3) 

由于向量只有 5 长,它只能用于为 beeswarm 的第一列着色,所以我们必须放大它(每个数据点需要一个颜色值)。

colors=rep(colors, ncol(x[,-5]))
beeswarm(x[,-5], pwcol=colors)

祝你的数据好运!

于 2014-01-23T15:04:46.803 回答