Beeswarm情节数据输入

时间:2013-12-10 19:24:40

标签: r plot beeswarm

我正在尝试使用我的特定数据集在R中创建一个beeswarm情节。我不是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列的beeswarm情节,并且每列显示不同的组,由不同的组着色(红色代表“A”,蓝色代表“ B'例如)。在y轴上,我想看到实际的数据点/测量值。

我可以按组分开数据,如果这样可以更容易 - 那么将有一个表用于'A',一个表用于'B',我可以在同一个图上重叠。

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

1 个答案:

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

请注意,gouping变量位于第5列。 现在我们可以通过以下方式轻松生成一个beeswarm图(因为它按列自动分组):

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

第5列被遗漏,因为它包含我们的分组而没有数据。

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

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

祝你的数据好运!