2010-06-09 4 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 개의 막대를 가지고 있습니다 ... "2 개의 막대"는 rowA/rowB에 해당하고 그룹은? 행 X 당 2 개의 값을 가지므로 bin에 대해 4 개의 값을 가지므로 "그룹"당 4 개의 막대가 있어야합니다. (예제 2 대신 ..) ?? 제발 당신이 정말로 그것을 어떻게 원해? – ShinTakezou

+0

double (rowA rowA, rowB rowB)을 하나의 값으로 "그룹화"하여 4 대신 bin 당 2 개의 막대를 갖도록 할 수 있습니까? – ShinTakezou

+0

@ShinTakezou : 데이터가 예제 그래프에 매핑 된 경우 bin => group 및 groupname => 연도. 따라서 bin은 x 축 레이블이 될 것이고 groupname은 컬럼 채색과 일치 할 것입니다. – dnagirl

답변

28

고전적인 솔루션입니다 :

나는이 예제와 비슷 무언가를 원한다.

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

을 (가정하면 당신의 dataframe은 df라는) 여기에 솔루션은 더 나은 지정할 수 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

+1

멋진 로케이터 사용 – John

관련 문제