我对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),reps和细菌菌株(变量B1-B3),但这是相同的格式。 ID只是样品的任意标签,B1中的值表示细菌B1中培养皿的百分比(同样适用于B2和B3)。
我想制作刻面堆积条形图(由rep刻面),其中每个堆积条形图每个时间点有一个条形(所以在这个例子中,将有2个小平面,每个小平面有3个小节)。我想要根据B1,B2和B3的覆盖百分比对每个条形图进行着色(这样就会有3种颜色,每种细菌一种颜色)。我之前使用过geom_bar()
,我想我可以弄清楚如何制作切面条形图,但我不知道如何着色它。我在ggplot中看到的aes(fill = mycondition)
的所有示例都包含数据集中单个列中的所有类别,而不是多列。如果没有完全重新格式化我的数据,有没有办法做到这一点?
答案 0 :(得分:2)
没有。如果图中的每个项目只代表一个数据项,ggplot
效果最佳。让自己熟悉reshape2
或reshape
软件包,数据重新格式化将不会成为问题。
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(...)
另请参阅以下稍微相关的问题:Repeat values to multiple plots when faceting