2013-02-18 113 views
3

我有這樣一個數據:Barplot 3分類變量

data <- data.frame(Comp = factor(rep(2003:2004, each = 8)), 
        Cat = rep(letters[1:4], 4), 
        Type = rep(c('Free','Used'), each = 4), 
        Count = trunc(rnorm(16,30,2))) 

我需要的東西就像一個barplotbeside = TRUEbeside = FALSETRUECatCompFALSE = Type)。

有了這些數據,這將導致與8列的曲線圖(的Comp與相互作用CatComp = 2003 + Cat = A ; Comp = 2003 + Cat = B ; ... ; Comp = 2004 + Cat = D)),每一個有2分堆疊列Count變量(的TypeFreeUsed和)的水平)。

任何提示如何做這種情節?我試圖在EXCEL中做一個例子,但是我也沒有做到這一點。

回答

4

同樣在ggplot2

ggplot(data, aes(x=interaction(Cat, Comp), y=Count, fill=Type)) + 
    geom_bar(position='stack', stat='identity') 

要在一個額外的變量(或兩個)基團可以使用facet_wrapfacet_grid

ggplot(data, aes(x=Cat, y=Count, fill=Type)) + 
    geom_bar(position='stack', stat='identity') + 
    facet_wrap(~ Comp) 
+0

同樣的問題:你知道是否有任何選項可以將每個Comp的'Cat'分組?像這樣:'barplot(VADeaths,在旁邊= TRUE)' – Rcoster 2013-02-18 16:06:19

+0

看到我的編輯使用'facet_wrap'。 – Justin 2013-02-18 16:11:35

+0

Exactaly!最後一個問題:有一種簡單的方法可以在每個欄的中間寫入數值? – Rcoster 2013-02-18 16:22:58

4

lattice

barchart(Count~interaction(Cat,Comp),groups=Type,data=data,auto.key=T,stack=T) 

enter image description here

另一種方式來組,從評論:

barchart(Count~Cat|factor(Comp),groups=Type,data=data,auto.key=T,stack=T) 

enter image description here

+0

幾乎在那裏!你知道是否有任何選項可以將每個「Comp」的「Cat」組合起來?像這樣:'barplot(VADeaths,旁邊= TRUE)' – Rcoster 2013-02-18 16:04:48

+0

+1!很好的使用'互動'! – agstudy 2013-02-18 16:07:47

+0

謝謝兄弟!最後一個問題:有一種簡單的方法可以在每個欄的中間寫入數值? – Rcoster 2013-02-18 16:25:49