본문 바로가기
  • plotly로 바로쓰는 동적시각화 in R & 파이썬
ggplot2/ggplot2의 기초

ggplot2의 기하요소 - geom_histogram()

by 아참형인간 2023. 2. 17.
geom_histogram.knit

사용데이터 : https://2stndard.tistory.com/161

기하 요소

기하 요소는 ggplot() 로 생성된 초기화 ggplot 객체에 데이터를 표현하는 도형을 지정하는 요소이다. 2.기하 요소에는 여러가지가 있지만 우리가 흔히 생각하는 것은 점(Point), 선(Line), 막대(Bar, Col) 등이 대표적이다.

기하 요소를 생성하기 위해서는 geom_*() 함수를 사용하고 각각의 geom_*() 함수를 호출할 때마다 각각의 기하 요소 레이어가 생성된다. 즉 이 레이어들이 계속 겹쳐서 그려짐으로써 데이터 시각화가 진행된다. 기하 요소를 위한 geom_*() 의 주요 함수는 각각의 함수에 따라 선언되는 시각화 요소들이 다르지만 데이터, 미적 요소 매핑, 기하 요소 지정, 통계 변환, 위치 조정 등이 선언된다.

기하 요소를 선택할 때는 각각의 기하 요소에 따라 표현되는 값의 제한이 있다. 예를 들어 막대 그래프의 경우 Y축은 연속된 정수값이 표현되는 것이 가능하지만 X축에는 연속된 정수값이 아닌 값의 구별이 가능한 이산 값(discrete value)이 표현되야 한다. 그래야 분리된 각각의 이산 값마다 하나씩의 막대로 데이터를 표현할 수 있다. 이렇게 표현하고자 하는 값의 종류에 따라 적합한 기하 요소를 선택하여야 한다. 값의 종류는 연속된 값(continuous value), 분리된 이산값(discrete value) 나 팩터(factor), 일변량, 다변량 등으로 나눌 수 있다.

일변수(One Variable) 데이터 시각화

일변수 데이터는 수치형 데이터 열 하나를 의미한다. ggplot() 는 보통 X축과 Y축의 두 개의 변수가 필요하기 때문에 하나의 데이터 열만 정의되면 나머지 하나의 데이터는 자동적으로 결정되어야 한다. 이렇게 자동적으로 결정되는 데이터는 보통 면적(Area), 밀도 분포(Density), 도수 분포(Histogram, count) 등이다. 일변수 데이터 시각화는 일변수로 설정되는 데이터가 연속성 수치 데이터인지 이산성 데이터인지에 따라 구분하여 기하 요소 함수를 사용해야 한다.

연속형 수치 데이터

geom_histogram()

geom_histogram 은 도수 분포표를 그리는 기하 요소 함수이다. 도수 분포는 초등학교때 배우는 가장 기본적인 막대 그래프로 각각의 변수 변량에 따른 데이터의 개수를 표현하는 시각화 방법이다. 변수 변량에 따른 데이터의 개수를 표현하기 때문에 X축 데이터만 설정하면 데이터를 자동적으로 데이터를 분석하여 X축에 매핑된 변수의 변량별로 데이터 개수를 산출하고 이 개수를 시각화 한다. 도수 분포표에 사용하는 방법은 막대 그래프이다. 하지만 막대로 표현된 도수 분포표는 막대 그래프에 속하는 종류 중 하나이지만 그 성질은 막대 그래프와는 다소 차이가 있다.

geom_histogram() 은 연속된 수치값을 X축에 매핑한다. 하지만 내부적으로 적절한 단위로 전체 X값을 분리하여 이산값으로 만들어 준 후에 막대 그래프를 생성한다. 이 과정을 설정하는 요소가 통계 요소이고 geom_histogram() 에서 사용되는 유일한 통계 요소는 연속된 값을 층화하여 구간하는 방법인 binning이다. 이처럼 자동적으로 계산되는 binning 떄문에 연속된 일변량 기하 요소에 속하고, 통계 요소인 ’bin’을 사용한다.

geom_histogram 의 사용법과 주요 매개변수는 다음과 같다.

geom_histogram(mapping = NULL, data = NULL, stat = "bin", position = "stack", ..., binwidth = NULL, bins = NULL, na.rm = FALSE, orientation = NA, show.legend = NA, inherit.aes = TRUE)\
- mapping : aes()를 사용하여 매핑할 미적 요소, 생략되면 ggplot()에 정의된 미적매핑 사용\
- data : 시각화를 위해 사용될 데이터, 생략되면 ggplot()에 정의된 데이터 사용\
- stat : 시각화에 적용될 통계요소, 기본값은 'bin'\
- position : 시각화에 적용될 위치요소, 기본값은 'stack'\
- ... : 미적 요소의 설정\
- bins : X축을 나누는 bin의 개수 설정\
- binwidth : X축을 나누는 bin의 너비 설정, 숫자벡터를 사용할 수 있다. (bin과 binwidth는 동시에 사용될 수 없다)\
- na.rm : 결측치를 제거할지를 결정하는 논리값\
- orientation : 레이어의 원점 설정\
- show.legend : 범례를 표시할지에 대한 논리값\
- inherit.aes : ggplot()에서 설정한 매핑값을 상속받을지 결정하는 논리값

geom_histogram() 에 매핑될 수 있는 미적 요소는 위치(x, y), alpha, color, fill, linetype, size 등이다.

##  df_취업통계를 ggplot 객체로 생성하고 p_histogram에 저장
p_histogram <- df_취업통계 |>
  ggplot()

bins가 30(default)인 geom_histogram은 다음과 같다.

## p_histogram에 x축을 '취업률_계'열로 매핑, binning 옵션을 주지 않았으므로 bins = 30이 기본값으로 설정한 geom_histogram 레이어를 생성 
p_histogram +
  geom_histogram(aes(x = 취업률_계))

bins가 90인 geom_histogram은 다음과 같다.

## p_histogram에 x축을 '취업률_계'열로 매핑, bins = 90으로 설정한 geom_histogram 레이어를 생성 
p_histogram +
  geom_histogram(aes(x = 취업률_계), bins = 90)

binwidth가 10인 geom_histogram은 다음과 같다.

## p_histogram에 x축을 '취업률_계'열로 매핑, binwidth = 10으로 설정한 geom_histogram 레이어를 생성 
p_histogram +
  geom_histogram(aes(x = 취업률_계), binwidth = 10)

binwidth가 5인 geom_histogram은 다음과 같다.

## p_histogram에 x축을 '취업률_계'열로 매핑, binwidth = 5으로 설정한 geom_histogram 레이어를 생성 
p_histogram +
  geom_histogram(aes(x = 취업률_계), binwidth = 5)

미적 요소가 설정된 geom_histogram은 다음과 같다.

## p_histogram에 x축을 '취업률_계'열로 매핑, 각각의 미적 요소을 설정한  geom_histogram 레이어를 생성 
p_histogram + 
  geom_histogram(aes(x = 취업률_계), color = 'red', fill = 'red', alpha = 0.2, linetype = 2)

댓글