我正试图用我的特定数据集在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等相关联,并根据输入数据在列中覆盖不同的度量。
发布于 2014-01-23 15:04:46
我不太确定您的数据如何,因为您没有提供我可以使用的示例数据。以"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变量位于第五列中。现在,我们可以通过以下方法轻松地生成蜂群(因为它是按列自动分组的):
library("beeswarm")
beeswarm(x[,-5])
列5被排除在外,因为它包含我们的分组而不包含数据。
现在是颜色了。我能想到的最简单的方法是使用蜂巢函数的pwcol
参数。为此,我们首先要创建一个颜色向量。也许有一个更好的方法来做这一切,但这是可行的。
在列5中创建颜色向量,当组为"A“时包含2,而非A.2和3则任意选择;这些是颜色的值(此处为红色和绿色)。col
喜欢的任何值都可以选择。
colors=ifelse(x$group=="A", 2,3)
由于向量只有5长,它只能用于着色蜂巢的第一列,因此我们必须扩大它(我们需要一个颜色值每个数据点)。
colors=rep(colors, ncol(x[,-5]))
beeswarm(x[,-5], pwcol=colors)
祝你的数据好运!
https://stackoverflow.com/questions/20503441
复制相似问题