2017-09-27 5 views
0

다음 입력 데이터가 있습니다.X 축 레이블의 순서 GGPLOT

sample_data <- data.frame(city = c("a", "b", "c","d", "a", "b", "c", "d"), value = c(10, 11, 17, 12, 13, 14, 11, 8), type = c(1,1,1,1,2,2,2,2), country = c("c1", "c2", "c1", "c1", "c2", "c2", "c1", "c1")) 

그리고 (막대 차트의 이렇게 두 세트) 유형에 따라 데이터를 분할 ggplot 내에서 플롯을 만들려고합니다. 막 대형 차트의 순서를 색상별로 그룹화하고자합니다. 오른쪽 차트 아래에는 파란색과 빨간색 막대가 서로 나란히 표시됩니다. 나는 많은 수의 변수를 가지고있어서 수동으로 그들을 움직이면 옵션이 될 수 없다. 내가 차트에 사용 된 코드는했다 :

sample_data <- sample_data %>% 
    mutate(city2 = factor(city, levels=city[order(country)])) 
ggplot(sample_data) + 
    geom_col(aes(x=city2, y=value, colour=country, fill=country)) + facet_wrap(~type) 

enter image description here

+0

이 요인 변수의 수준을 재정의 당신 요소의 순서를 변경할 수 있습니다. 두 번째 질문을 잘 이해하지 못합니다. – R18

+0

저는 많은 수의 변수를 가지고 있기 때문에 막대 차트를 수동으로 이동하지 않고 국가 색상을 자동으로 그룹화하는 방법이 있습니다. 어떤 부분을 이해하지 못하니? – user8491385

+0

'facet_wrap()'함수에서'type'을'country'로 바꾸면 원하는 것을 얻을 수 있습니까? 'ggplot (sample_data) + geom_col (aes (x = 도시 2, y = 값, 색상 = 국가, 채우기 = 국가)) + 패싯 겹침 (~ 국가)' – R18

답변

1

내가 다른 측면에서, 같은 도시 (x 축 변수)를 위해 제안하는 다른 채우기 색과 연관 될 수 있습니다 의 변수는 각면에서 다를 수 있으며,이 경우 요소 순서 지정은 작동하지 않습니다. 여기

채우기 변수에 따라 x 축 순서를 지정하는 해결 방법입니다, &는 플롯에 가짜 x 축이 추가

library(dplyr) 

sample_data <- sample_data %>% 
    group_by(type) %>% 
    arrange(country) %>% 
    mutate(x = row_number()) %>% 
    ungroup() 

ggplot(sample_data, 
     aes(x = x, y = value, fill = country, label = city)) + 
    geom_col() + 
    geom_text(aes(y = 0), nudge_y = -1) +  # fake x-axis 
    facet_wrap(~type) + 
    theme(axis.text.x = element_blank(),  # hide x-axis labels 
     axis.ticks.x = element_blank(),  # hide x-axis tick marks 
     panel.background = element_blank()) # white background for easier reading 

enter image description here