2010-06-09 32 views
12

aşağıdaki verileri:gruplandırılmış çubuk grafik

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 kullanarak, ROWA bir bar ve her kutusu için rowB için bir bar, bir çubuk grafik olmak için. Total_dist'i bir veya diğeriyle gruplayabilirim (plot(total_dist~bin) veya plot(total_dist~groupname)). Ama onları nasıl birleştireceğimi anlayamıyorum. İşte example grouped bar graph

+0

kullanıyor? Alt grafik örneğinde, EUL, PES, EFA ... kutular mı? Örnekte, grup başına 2 çubuk var ... "iki çubuk", rowA/rowB'ye karşılık gelen gruplara karşılık geliyor? rowX başına iki değere sahibiz, bu yüzden bin için 4 değere sahibiz, bu yüzden "grup" başına 4 çubuğumuz olmalı? (Örnek 2 yerine)? lütfen gerçekten nasıl istediğini çizebilir misin? – ShinTakezou

+0

, çiftleri (satırA satırA, satırB satırB) tek bir değere "gruplandırmanıza" izin verir, böylece 4 yerine bin başına 2 çubukunuz olur? ve total_dist'i aynı bölmedeki ve aynı grup adında nasıl birleştirirsiniz? (toplam? ortalama?) – ShinTakezou

+0

@ShinTakezou: Veriler örnek grafikle eşlenmişse, bin => group ve groupname => year. Bu yüzden bin x eksenli etiketler olurdu ve grup adı sütun rengine karşılık geliyordu. – dnagirl

cevap

28

klasik bir çözümdür:

Bu örneğe benzer bir şey istiyorum.

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")) 

(farz sizin dataframe df adlı) ve burada çözüm daha iyi belirtebilirsiniz 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

çok teşekkürler! – dnagirl

+1

Serin konumlandırıcı kullanımı – John

İlgili konular