2017-12-14 8 views
1

두 개의 치수를 따라 변수를 합한 막대 차트를 플롯하려는 경우, 하나는 x에 따라 펼쳐지고 다른 하나는 세로로 쌓입니다.ggplot geom_bar with stat = "sum"

다음 두 명령은 동일한 작업을 수행 할 것으로 예상되지만 두 번째 명령은 원하는 결과를 제공합니다 (여기서 직접 데이터를 집계합니다).

첫 번째 경우에서 어떤 일이 벌어지고 있는지 이해하고 싶습니다. ggplot2의 기본 집계 기능을 사용하여 올바른 결과를 얻는 방법이 있다면 알려주세요. 이 사진을 산출

enter image description here

p2 <- ggplot(diamonds %>% 
       group_by(cut,color) %>% 
       summarize_at("price",sum,na.rm=T), 
       aes(cut,price,fill=color)) + 
    geom_bar(stat="identity",na.rm=TRUE) 

:

library(ggplot2) 
library(dplyr) 
p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
    geom_bar(stat="sum",na.rm=TRUE) 

이 플롯 항복, 우리의 바의 상단이 있어야 할 곳에

여기 enter image description here

이야을 P1하지 않습니다 다음 값을 부여하십시오 :

diamonds %>% group_by(cut) %>% summarize_at("price",sum,na.rm=TRUE) 
# # A tibble: 5 x 2 
# cut price 
# <ord> <int> 
# 1  Fair 7017600 
# 2  Good 19275009 
# 3 Very Good 48107623 
# 4 Premium 63221498 
# 5  Ideal 74513487 

답변

1

geom_bar에 대한 stat 옵션을 잘못 이해했을 수 있습니다. 이 경우 각 막대 내에서 각 요소의 값을 합산하고 각 색상에서 합계의 양을 기준으로 색상 표시 할 막대를 지정하기 위해 값을 사용하는 geom_col에 대한 호출을 단순화 할 수 있습니다 바의 높이; 따라서 각 카테고리 내의 모든 값을 "합"합니다. 당신이 합계 호출 geom_bar를 사용하려면 다음은 "정체성"통계 사용하려는, 또는

p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
     geom_col(na.rm=TRUE) 

: 들어

p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
     geom_bar(stat = "identity", na.rm=TRUE) 

예를 들어, 다음은 원하는 출력을 줄 것이다 `같은를 얻을 것 또는 https://stackoverflow.com/a/27965637/6722506

+0

, 나는'ggplot 생각 (다이아몬드, AES를 (잘라 내기, 채우기 = 색상, 무게 = 가격)) + \t geom_bar (na.rm = TRUE) : ​​자세한 내용은,이 스레드를 고려 결과는'p2'입니다. – joran

+0

^여행 오류. 'geom_bar'를 사용하려면''stat''를''identity ''로 지정해야합니다. – creutzml

+1

그것은 나를 위해 오류를 여행하지 않습니다, 당신은 그것을 실행해야합니까? 내가 '무게'미학을 사용하고 있다는 것을 눈치 채지 못했을 것입니다. 차이가 있습니다. – joran