사용데이터 : https://2stndard.tistory.com/68
geom_histogram()
을 사용하여 생성되는 히스토그램은 단변량 시각화이다. 즉 X, Y축으로 표현되는 2차원 좌표 중 X축은 변수로 매핑되고 Y축은 자동적으로 X축에 매핑된 변수의 binning에 따른 구간의 데이터 사례수를 산출하여 막대로 표현한다.
하지만 일선 업무에서 히스토그램을 사용할 때는 사례수를 사용하는 경우도 있지만 많은 경우 백분률을 사용하는 경우가 많다. 이렇게 백분률을 사용한 히스토그램을 만드는 방법은 다음과 같다.
히스토그램에 백분률을 사용하기 위해서는 먼저 X축에 매핑되는 변수의 타입이 무엇인지 파악해야 한다. X축에 매핑되는 변수가 연속형 변수라면 geom_histogram()
을 사용하는 것이 효과적이고 이산형 변수라면 geom_bar()
를 사용하여야 한다.
geom_histogram을 사용하는 연속형 변수
연속형 변수에 대한 히스토그램에서 백분률을 사용하는 첫 번째 방법은 미리 정의된 특수 변수인 ..count..
를 사용하는 방법이다. ..count..
는 매핑되는 변량의 사례수를 산출하는 변수로 ggplot2
에 자체적으로 정의된 변수이다. 전체의 비율을 구하기 위해서는 각각 변량의 사례수(..count..
)를 전체 사례수(sum(..count..)
)로 나누어 산출된 결과를 사용하는 방법이다.
df_취업률_2000 |>
ggplot() +
geom_histogram(aes(x = 취업률, y = ..count../sum(..count..))) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
두 번쨰 방법은 after_stat()
을 사용하는 방법이다. after_stat()
은 매핑할 변수를 통계 처리한 후 매핑해 주는 함수이다. 따라서 이 함수를 앞서 사용한 ..count..
과 유사한 방법으로 통계처리하여 사용하는 방법이다. after_stat()
에 사례수를 설정하는 count
와 sum()
을 사용하여 전체에 사례수 합에 대한 해당 변량의 사례수의 비율을 구함으로써 그려준다. after_stat(count/sum(count))
를 Y축에 매핑해준다.
df_취업률_2000 |>
ggplot() +
geom_histogram(aes(x = 취업률, y =after_stat(count/sum(count)))) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
geom_histogram()
에서 X축에 이산형 변수가 매핑되면 다음과 같이 오류를 내게 된다. 따라서 이산형 변수에 대해서는 geom_bar()
를 사용해야 한다.
df_취업률_2000 |>
ggplot() +
geom_histogram(aes(x = 대계열, y =after_stat(count/sum(count)))) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
## Error: StatBin requires a continuous x variable: the x variable is discrete.Perhaps you want stat="count"?
geom_bar을 사용하는 이산형 변수
이산형 변수에 대한 히스토그램에서 백분률을 사용하는 방법은 앞서 설명한 연속형 변수에서 사용한 두가지 방법을 사용할 수 있다.
첫 번째 방법으로 사용했던 ..count..
를 사용하는 방법은 다음과 같다 .
df_취업률_2000 |>
ggplot() +
geom_bar(aes(x = 대계열, y = ..count../sum(..count..))) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
만약 앞서 설명한 연속형 변수에 대해 geom_bar()
를 사용하면 오류를 내지는 않는다. 다만 아래와 같이 bins가 설정되지 않기 때문에 보기 어려운 그래프가 나타난다.
df_취업률_2000 |>
ggplot() +
geom_bar(aes(x = 취업률, y = ..count../sum(..count..))) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
두 번쨰 방법은 after_stat()
을 사용하는 방법이다. 사용방법은 geom_histogram()
과 동일하다.
df_취업률_2000 |>
ggplot() +
geom_bar(aes(x = 대계열, y = after_stat(count/sum(count)))) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
세 번쨰 방법은 geom_histogram()
에서는 불가한 방법으로 ..prop..
을 사용하는 것이다. ..prop..
은 앞서 설명한 ..count..
와 같이 특수 변수로써 비율을 구하는 변수이다. 따라서 앞서 백분률을 구하기 위해 사용된 ..count../sum(..count..)
을 대신하여 ..prop..
을 사용하면 동일하게 그릴 수 있다. 다만 이 방법을 사용하면 group
매개변수로 전체를 하나의 그룹으로 묶어주어야 한다. 하나의 그룹으로 묶어주지 않으면 각각의 변량값에 대한 비율을 구하기 때문에 모두 100%로 표기된다. 하지만 group
을 하나로 묶어주면 전체에 대한 비율을 구해준다. 보통 전체를 하나의 그룹으로 묶을때는 group = 1
으로 사용한다.
df_취업률_2000 |>
ggplot() +
geom_bar(aes(x = 대계열, y = ..prop.., group = 1)) +
scale_y_continuous(labels = scales::percent) +
labs(y = '백분률')
'ggplot2' 카테고리의 다른 글
ggplot 이어 붙이기와 영국 이코노미스트지 스타일의 시각화 - 전문대학의 위기 (9) | 2022.05.02 |
---|---|
백분률 히스토그램의 데이터 라벨과 정렬 in R (0) | 2022.04.24 |
geom_histogram의 bins와 binwidth (0) | 2022.04.21 |
벤다이어그램 in R (6) | 2022.02.19 |
회귀방정식이 표기된 ggplot2 in R (0) | 2022.02.19 |
댓글