我正在尝试使用我的特定数据集在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等,并在给定输入数据的情况下将不同的测量值叠加在一列中。
答案 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)
祝你的数据好运!