2013-05-31 78 views
0

我正在嘗試創建堆疊條形圖以顯示每列x1-4總共14個觀察值中有多少個是-1以及有多少個是1. 我想讓它們全部在同一個圖表上 - 每列1 bar。 這些數字可以視爲因素。使用ggplot2創建堆積條形圖

數據:

x1 x2  x3 x4 
1 -1 1  1  1 
2 -1 1  1  -1 
3 -1 1  1  1 
4 -1 1  1  1 
5 -1 -1 -1  -1 
6 1 1  1  1 
7 -1 1  1  1 
8 -1 1 -1  1 
9 -1 1 -1  1 
10 -1 1  1  1 
11 -1 -1 -1  1 
12 -1 1 -1  -1 
13 -1 -1 -1  1 
14 -1 -1 -1  -1 
+0

你試過了什麼?看一下'reshape2'包中的'melt',它應該是相當直接的。一般來說,'ggplot'喜歡「長」格式的東西而不是寬。 – Justin

+0

我想過使用'ddply'來總結數據,但是我不能用一列來分組,所以我又被卡住了... – haki

回答

2

就熔化或堆疊您的data.frame:

DF <- read.table(text="x1 x2  x3 x4 
1 -1 1  1  1 
2 -1 1  1  -1 
3 -1 1  1  1 
4 -1 1  1  1 
5 -1 -1 -1  -1 
6 1 1  1  1 
7 -1 1  1  1 
8 -1 1 -1  1 
9 -1 1 -1  1 
10 -1 1  1  1 
11 -1 -1 -1  1 
12 -1 1 -1  -1 
13 -1 -1 -1  1 
14 -1 -1 -1  -1",header=TRUE) 

DF.stack <- stack(DF) 

geom_bar默認使用stat_bin。沒有必要總結自己。

library(ggplot2) 
ggplot(DF.stack,aes(x=ind,fill=factor(values))) + geom_bar() 

如果你想要的數字,使用table(DF.stack)

+0

那太棒了。正是我需要的。你能暗示我如何控制顏色?我想-1是紅色和1是綠色(我是新ggplot)。 – haki

+1

@haki - 'scale_fill_manual(values = c(「red」,「blue」))'。我強烈建議閱讀ggplot文檔,它非常廣泛:http://docs.ggplot2.org/current/ – Chase