2010-06-09 157 views
12

,我有以下數據:分組條形圖

bin groupname total_dist 
0 rowA 377 
0 rowA 306.6 
0 rowB 2.1 
0 rowB 110.6 
1 rowA 918.1 
1 rowA 463.2 
1 rowB 798.2 
1 rowB 1196 
2 rowA 1295.1 
2 rowA 1269.1 
2 rowB 698 
2 rowB 1022.1 

使用R,我想打一個條形圖那裏是行rowA酒吧和rowB中的每個一間酒吧。我可以將total_dist與其中一個組合(plot(total_dist~bin)plot(total_dist~groupname))。但我無法弄清楚如何合併它們。

我想要的東西,看起來類似於此示例: example grouped bar graph

+0

解決方案,您可以指定更好?在下圖的例子中,EUL,PES,EFA ...是垃圾箱嗎?這個例子每組有2個小節......「兩個小節」對應於rowA/rowB,小組對應於?我們每行有兩個值X,所以我們有4個bin的值,所以我們應該每個「group」有4個小節? (而不是2個例子)。請你能描繪出你真正想要的嗎? – ShinTakezou 2010-06-09 15:29:56

+0

是否讓您將雙打(rowA rowA,rowB rowB)「分組」爲單個值,以便每個bin有2個酒吧而不是4個?以及如何將「total_dist」合併到同一個bin和同一個groupname中(sum?mean?) – ShinTakezou 2010-06-09 15:50:49

+0

@ShinTakezou:如果我的數據映射到示例圖,bin => group和groupname => year。所以bin將是x軸標籤,groupname將對應於列着色。 – dnagirl 2010-06-09 16:16:34

回答

28

下面是一個經典的解決方案。 (假設你的數據框被命名爲df

data <- tapply(df$total_dist, list(df$groupname,df$bin), sum) 

barplot(data,beside=T,col=c("#ee7700","#3333ff") 
,main="European Parliament Elections",xlab="Group",ylab="Seats") 

legend(locator(1),rownames(data),fill=c("#ee7700","#3333ff")) 

這裏使用GGPLOT2

library(ggplot2) 
qplot(factor(bin),data=df,geom="bar",fill=groupname,weight=total_dist,position="dodge", 
main = "European Parliament Elections", xlab="Group",ylab="Seats") 

alt text

+0

非常感謝! – dnagirl 2010-06-09 16:47:59

+1

很酷的使用定位器 – John 2010-06-09 19:54:21