2017-09-12 5 views
1

나는 미국 주당 3 건의 범죄 통계와 추가 UrbanPop 변수가 포함 된 df USArrests를 보유하고 있습니다. 저는 각주의 3 가지 범죄 통계를 포함하는면 처리 된 막 대형 차트를 만들려고합니다. y 축은 특정 휴식 시간 (100, 200, 300)에 100,000 명당 사례입니다. 그래프의 맨 위에는 상태가 표시됩니다.R ggplot multivariable facet

내 주요 문제는 매핑/aes 함수를 완전히 이해하지 못하고 있으며 3 가지 변수를 모두 하나의 그래프로 가져 오는 것과 관련이 있다는 것입니다. 감사합니다

library(ggplot2) 

USArrests$state_name <- rownames(USArrests) 

p <- ggplot() + 
    layer(data = USArrests, 
     stat = "identity", 
     geom = "bar", 
     mapping = aes(x = Assault, Rape, Murder), 
      position = "identity") + 
    scale_y_discrete(name = "Cases per 100,000 people", 
        breaks = c(100, 200, 300), 
        labels = c("100", "200", "300")) + 
      facet_wrap(~ state_name) 
plot(p) 

답변

3

데이터 프레임의 형태를 변경해야합니다. USArrests2은 재구성 된 데이터 프레임입니다. 그런 다음 Crime을 x 축에 범주로 표시하고 Number을 y 축에 연속하여 표시 할 수 있습니다. 이 경우 geom_bar(stat = "identity") 대신 geom_col()을 사용할 수도 있습니다. 그들은 동일합니다. facet_wrap은 패싯을 생성하는 방법입니다. ncol 또는 nrow을 사용하여 열 또는 행 번호를 지정할 수 있습니다.

library(dplyr) 
library(tidyr) 
library(ggplot2) 

USArrests2 <- USArrests %>% 
    gather(Crime, Number, Assault, Rape, Murder) 

ggplot(USArrests2, aes(x = Crime, y = Number)) + 
    geom_bar(stat = "identity") + 
    scale_y_continuous(breaks = c(100, 200, 300)) + 
    facet_wrap(~ state_name, nrow = 5) 
+0

감사합니다. 매우 도움이되었습니다. – SamGROW