2012-10-31 58 views
1

我有以下數據集:製造堆疊條形圖3條爲每個類別

 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個小節。

例如,第一列有我的類別,這些是我的圖表x軸中的名稱。對於每個類別(「CSF1PO」和「D10S1248」),我需要3欄(第2欄中的「GEL」,「MegaBACE」,「ABI」)。每個小節應分爲3個子集(第3列中的「-9」,「-1」,「NA」)。第四欄(比例)有我的價值觀。

我想是這樣

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

但與酒吧爲每個類別並排側,而不是分開的網格。 任何人都可以幫忙嗎? 謝謝!

+0

如果你想既躲閃和堆棧的吧,我不[信](http://stackoverflow.com/q/12715635/3243640)你可以。 – joran

回答

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

+0

這很有趣。謝謝!但是現在我沒有繪製數據的子集(df $ NAtype)......它們應該是條形圖中的堆棧。所以這是不可能的? – vitor