为每个类别制作一个带有3个条形的堆积条形图

时间:2012-10-31 19:24:01

标签: r

我有以下数据集:

      Marker   Method NAtype        Ratio
1     CSF1PO      GEL     -9 3.623417e-01
2     CSF1PO      GEL     -1 4.713273e-02
3     CSF1PO      GEL     NA 0.000000e+00
4     CSF1PO MegaBACE     -9 1.417205e-02
5     CSF1PO MegaBACE     -1 8.312974e-03
6     CSF1PO MegaBACE     NA 5.405026e-06
7     CSF1PO      ABI     -9 4.714592e-02
8     CSF1PO      ABI     -1 1.989925e-03
9     CSF1PO      ABI     NA 4.174494e-05
10  D10S1248      GEL     -9 9.999201e-01
11  D10S1248      GEL     -1 7.098303e-05
12  D10S1248      GEL     NA 0.000000e+00
13  D10S1248 MegaBACE     -9 6.562637e-01
14  D10S1248 MegaBACE     -1 2.518769e-03
15  D10S1248 MegaBACE     NA 1.081005e-05
16  D10S1248      ABI     -9 7.138484e-03
17  D10S1248      ABI     -1 1.029723e-03
18  D10S1248      ABI     NA 1.391498e-05

我想用这些数据制作堆积条形图。我不会精通ggplot2而且我不知道如何为每个类别创建3个小节。

例如,第1列有我的类别,这些是我的图表的x轴上的名称。对于每个类别(“CSF1PO”和“D10S1248”),我想要3个条(第2列中的“GEL”,“MegaBACE”,“ABI”)。每个条应分为3个子集(第3列中的“-9”,“ - 1”,“NA”)。第4列(比率)有我的价值。

我想要像

这样的东西
ggplot(data, aes(x=Marker, y=Ratio, fill=NAtype)) + geom_bar(stat="identity") + facet_grid(~Method)

但是每个类别的条形并排,而不是分开的网格。 有人可以帮忙吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

ggplot2不允许您将stackdodge同时包含在同一图表中。但是您可以使用facet_wrap来实现您想要的效果。请参阅此示例并附上您的数据:

ggplot(df, aes(Method, Ratio, fill = Method)) + 
geom_bar(stat = "identity", postion = "dodge") + facet_wrap(~Marker)

enter image description here