2014-05-19 3 views
1

다른 요인 변수의 값에 따라 누적 막대 그래프의 막대를 그룹화하려고합니다. 그러나 패싯을 사용하지 않고이 작업을 수행하려고합니다.패싯을 사용하지 않는 막대 그래프의 그룹화

my data in long format

나는 그룹에 afk 변수에 따라 스택 막대를 원한다. alfabetically 주문 barplot을 제공

ggplot(nl.melt, aes(x=naam, y=perc, fill=stemmen)) + 
    geom_bar(stat="identity", width=.7) + 
    scale_x_discrete(expand=c(0,0)) + 
    scale_y_continuous(expand=c(0,0)) + 
    coord_flip() + 
    theme_bw() 

: 정상적인 누적 막대 그래프는 함께 할 수 enter image description here

은 내가 aesx=reorder(naam,afk)를 사용하여 그룹화를 시도했다. 하지만 그건 효과가 없었습니다. 또한 group=afk을 사용하면 원하는 효과가 없습니다.

아이디어가 있습니까?

+0

Jaap, 웬일인지, 당신의'dputeded 데이터를 복사 할 수 없습니다, 맞습니까? 일부 따옴표가 누락 된 것으로 보입니다. –

+0

@CarlosCinelli 데이터에 대한 링크로 질문을 업데이트했습니다. – Jaap

+1

나는 이것이 필요한 것이라고 생각한다 : http://stackoverflow.com/questions/20060949/ggplot2-multiple-sub-groups-of-a-bar-chart –

답변

3

reorder은 작동해야하지만 문제는 요인별로 재주문하려고하는 것입니다. 해당 정보를 어떻게 사용하고 싶은지 명시해야합니다. 당신은

nl.melt$naam <- reorder(nl.melt$naam, as.numeric(nl.melt$afk)) 

또는

nl.melt$naam <- reorder(nl.melt$naam, as.character(nl.melt$afk), FUN=min) 

당신이 afk의 기존의 수준을 기준으로 정렬 할 것인지 또는 당신이 afk의 수준에 따라 알파벳순으로 정렬 할 경우에 따라 사용할 수 있습니다.

것을 실행하고 ggplot 코드를 다시 실행 한 후, 내가

updated bar chart

-1

R은 그래프의 속성보다는 데이터의 속성으로 레벨의 순서를 보는 경향이 있습니다. 플로팅 명령을 호출하기 전에 데이터 자체를 재정렬하십시오. 다음을 실행 해보십시오.

nl.melt$naam <- reorder(nl.melt$naam, nl.melt$afk) 

ggplot 코드를 실행하십시오. 또는 naam에서 요인 수준을 재정렬하는 다른 방법을 사용하십시오.

+0

불행히도 그것이 작동하지 않는다 :-(나는 아무런 효과도 없다. 조금도. – Jaap

2

(연결 응답 @CarlosCinelli 기준) @ MrFlick의 접근 방식에 대한 대안을 얻을 것은 :

ggplot(nl.melt, aes(x=interaction(naam,afk), y=perc, fill=stemmen)) + 
    geom_bar(stat="identity", width=.7) + 
    scale_x_discrete(expand=c(0,0)) + 
    scale_y_continuous(expand=c(0,0)) + 
    coord_flip() + 
    theme_bw() 

다음을 제공합니다 : enter image description here

관련 문제