2013-08-23 7 views
7

나는 아래의 data.frame을 df이라고합니다. 내 문제는 y 축 순서와 관련이 있습니다. y 축의 이름이 변수 depth에 따라 정렬되기를 원합니다.ggplot2, y 축 주문

가 나는 경우이 :

ggplot(df,aes(x=factor(name),y=depth)) + geom_bar(stat='identity') + coord_flip() + labs(y='depth',x='species') 

내가 아래 graph1을 얻었다는 주문되지 않습니다. 따라서 내가 다음 지침 내가 깊이에 따라 내 요인 name의 수준을 주문, here을 발견

df2=df[order(df$depth),] 
df2$name=factor(df2$name,levels=df2$name) 
ggplot(df2,aes(x=factor(name),y=depth)) + geom_bar(stat='identity') + coord_flip() + labs(y='depth',x='species') 

내가 아래 Graph2을 얻었다. 그러나 다음 단계는 Mut 변수에 따라 막대를 다르게 색칠하는 것이 었습니다.

ggplot(df2,aes(x=factor(name),y=depth)) + geom_bar(stat='identity',data=subset(df2,df2$Mut==2),fill='red') + geom_bar(stat='identity',data=subset(df2,df2$Mut==1),fill='blue') + coord_flip() + labs(y='depth',x='species') 

그리고 더 이상 주문하지 않은 Graph3이 있습니다.

어떻게 Graph1을 enter image description here 그래프 2 enter image description here 그래프 3 enter image description here 그래프 2

    name depth Mut   x 
25 A_rubrocinctus_GA070  8 2 -0.033318659 
9  A_omanensis_GA051 10 2 -0.020387101 
4 A_latifasciatus_GA083 12 1 -0.005645811 
27  A_frenatus_GA068 12 1 -0.024190876 
13  A_percula_GA017 15 1 0.034591721 
14  A_percula_GA039 15 2 0.034591721 
15  A_percula_GA053 15 2 0.034591721 
16  A_ocellaris_GA009 15 1 0.052042539 
17  A_ocellaris_GA021 15 1 0.052042539 
24  A_ephippium_GA057 15 2 -0.016859412 
20 P_biaculeatus_GA008 16 1 -0.014466403 
21 P_biaculeatus_GA025 16 1 -0.014466403 
22 P_biaculeatus_GA065 16 1 -0.014466403 
23  A_melanopus_GA034 18 2 -0.026915545 
26  A_melanopus_GA012 18 2 -0.026915545 
12 A_sandaracinos_GA018 20 1 0.055839755 
6  A_nigripes_GA055 25 1 0.023420045 
8   A_sebae_GA029 25 1 0.021767793 
11 A_akallopisos_GA067 25 1 0.043272525 
28 A_akallopisos_GA072 25 1 0.043272525 
34  A_akindynos_GA032 25 1 -0.020707141 
1  A_polymnus_GA004 30 1 0.030902254 
3  A_allardi_GA033 30 1 -0.020277664 
5  A_bicinctus_GA036 30 1 -0.025354572 
7  A_polymnus_GA019 30 1 0.030902254 
32 A_chrysopterus_GA040 30 1 -0.022402365 
33 A_chrysopterus_GA031 30 1 -0.022402365 
35 A_perideraion_GA020 38 1 0.052830132 
36 A_perideraion_GA015 38 1 0.052830132 
2  A_tricinctus_GA058 40 1 -0.016230301 
18 A_chrysogaster_GA080 40 1 0.012608835 
19 A_chrysogaster_GA077 40 1 0.012608835 
10 A_latezonatus_GA023 45 1 -0.010718845 
31 A_mccullochi_GA056 45 1 -0.031664307 
29  A_clarkii_GA044 60 1 -0.014474658 
30  A_clarkii_GA010 60 1 -0.014474658 

에 표시되는 순서를 존중 그래프 3를 생성 할 수 있습니다 감사합니다!

답변

17

데이터에 변수가 각각 Mut 인 경우 각 관찰이 속한 수준을 결정하므로 geom_bar()을 두 번 사용하지 않아도됩니다. aes() 안에 fill=factor(Mut)을 추가하고 순서가 지정된 데이터와 함께 df2를 사용하기 만하면됩니다. 막대는 올바른 순서와 색상으로 자동으로 작성됩니다.

ggplot(df2,aes(x=factor(name),y=depth,fill=factor(Mut))) + 
    geom_bar(stat='identity') + 
    coord_flip() + labs(y='depth',x='species') 

동일한 결과

는 X 값에 대해 내부 aes() reorder()를 원래 dataframe df 달성하고 기능 할 수있다.

ggplot(df,aes(x=reorder(name,depth),y=depth,fill=factor(Mut))) + 
    geom_bar(stat='identity') + 
    coord_flip() + labs(y='depth',x='species') 

enter image description here

+0

좋아! Didzis Elferts에게 감사드립니다! – Sulawesi