2

我对 ggplot 很陌生,我正在尝试创建多面堆积条形图。我正在研究几个时间点内不同菌株的相对丰度。这是我的数据的简化版本:

ID  Tmpt    Rep B1  B2  B3
A1  1       1   .2  .4  .4
A2  1       2   .1  .4  .5
A3  2       1   .2  .45 .35
A4  2       2   .2  .3  .5
A5  3       1   .15 .5  .35
A6  3       2   .2  .5  .3

我的实际数据有更多的时间点 (Tmpt)、重复次数和细菌菌株(变量 B1-B3),但这是相同的格式。ID 只是样本的任意标签,B1 中的值表示培养皿中细菌 B1 覆盖的百分比(同样适用于 B2 和 B3)。

我想制作多面堆积条形图(由代表分面),其中每个堆积条形图每个时间点都有一个条形图(因此在此示例中,将有 2 个面,每个面有 3 个条形图)。我希望根据 B1、B2 和 B3 的覆盖百分比对每个条进行着色(这样会有 3 种颜色,一种用于每种细菌菌株)。我以前用过geom_bar(),我想我可以弄清楚如何制作多面条形图,但我不知道如何着色。我aes(fill = mycondition)在 ggplot 中看到的所有示例都将所有类别都放在数据集中的单个列中,而不是多个列。有没有办法在不完全重新格式化我的数据的情况下做到这一点?

4

1 回答 1

2

ggplot如果图中的每个项目恰好代表一个数据项,则No.效果最好。让自己熟悉reshape2orreshape包,然后重新格式化数据就没有问题了。

library(reshape2)
data.m <- melt(data, id.vars=c("ID", "Tmpt", "Rep"))

您应该能够data.m直接用于以您需要的方式绘制数据:

ggplot(data.m, aes(color=variable)) + facet_wrap(~Rep) + geom_bar(...)

另请参阅以下稍微相关的问题:在 faceting 时将值重复到多个图

于 2013-07-23T20:24:44.710 回答