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

박스 플롯(Boxplot) in R

by 아참형인간 2022. 6. 11.
boxplot.knit

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

geom_boxplot()

박스 플롯은 데이터의 전반적 분포를 살펴볼 수 있는 매우 좋은 시각화 방법이다. 앞서 설명한 산점도는 X, Y축 모두 연속형 수치 데이터를 사용하지만 박스 플롯은 이산형 데이터로 분류되는 데이터의 전반적 분포를 시각화할 수 있다는 점에서 활용도가 크고 산점도(Scatter Plot)에서는 표현할 수 없었던 중간값, IQR 범위, 이상치 등의 추가적인 정보를 같이 볼 수 있다는 장점이 있다. R에서 박스 플롯 레이어를 생성하기 위해서는 geom_boxplot()을 사용한다.

박스 플롯으로 표현되는 상자의 중심은 중앙값이다. 중앙값은 가로선으로 표현되며 그 주위를 상자가 둘러싸고 있다. 상자의 상단과 하단은 관측값들의 25%와 75%를 나타낸다. 상자의 상단과 하단 범위를 벗어나면 사분위 범위의 1.5배에 해당하는 ’수염(whisker)’으로 표현된다. 수염 밖에 존재하는 값은 점으로 표기하며 이상치로 간주된다.

박스 플롯의 구조

geom_boxplot()에서 사용이 가능한 미적 요소는 x, y, lower(xlower), upper(xupper), middle(xmiddle), ymin(xmin), ymax(xmax), alpha, colour, fill, group, linetype, shape, size, weight 등이 있다. 이 중 lower(xlower), upper(xupper), middle(xmiddle), ymin(xmin), ymax(xmax)는 박스를 수동으로 설정하기 위해 사용하는 미적 요소이다.

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

X, Y 축 데이터 매핑

ggplot2를 사용하여 박스 플롯을 그리려면 먼저 X, Y축에 어떤 데이터를 매핑시킬지 결정해야 한다. 박스 플롯은 보통 X축에 이산형 변수, Y축에 연속형 변수를 매핑하는 것이 일반적이다.

## p_boxplot에 x축에 대계열, y축에 취업률_계로 매핑한 geom_boxplot 레이어를 생성
p_boxplot + 
  geom_boxplot(aes(x = 대계열, y = 취업률_계)) 

만약 가로형 박스플롯을 그린다면 X축에 연속형 변수, Y축에 이산형 변수를 매핑하거나 가로형 박스 플롯을 그린 후에 coord_flip()을 사용하여 축을 바꾸어 주는 방법을 선택할 수도 있다. 박스로 표현해야 할 이산형 변수의 변량이 많다면 세로형 막대보다는 가로형 막대로 그려주는 것이 효과적이다.

## p_boxplot에 x축에 취업률, y축에 대계열로 매핑한 geom_boxplot 레이어를 생성
p_boxplot + 
  geom_boxplot(aes(y = 대계열, x = 취업률_계)) 

박스 내부 색 설정

박스 내부에 색을 넣으려면 ’fill’에 색을 매핑한다. 여기서 ’color’와 헤깔리는 경우가 있는데 박스 플롯에서 ’color’는 박스를 만드는데 사용하는 선의 색을 지정한다.

## p_boxplot에 x축에 대계열, y축에 취업률_계, fill을 대계열로 매핑, 미적 요소를 설정한 geom_boxplot레이어를 생성
p_boxplot + 
  geom_boxplot(aes(x = 대계열, y = 취업률_계, fill = 대계열), linetype = 2) 

’fill’이 아닌 ’color’를 설정하게 되면 선의 색과 함께 이상치를 표시하는 점의 색도 같이 변경된다.

## p_boxplot에 x축에 대계열, y축에 취업률_계, color을 대계열로 매핑, 미적 요소를 설정한 geom_boxplot레이어를 생성
p_boxplot + 
  geom_boxplot(aes(x = 대계열, y = 취업률_계, color = 대계열), linetype = 2) 

notch

2017년 iPhoneX가 처음 소개되면서 유명세를 탄 디자인 스타일이 notch 스타일이다. 이 notch 스타일은 평면이나 직선의 일부에 삼각형이나 사각형의 홈을 내는 디자인 스타일을 말한다. 박스 플롯에서 유일하게 사용되는 노치 스타일은 ’notch’를 TRUE로 설정하면 적용되고 ’notchwidth’를 사용하여 노치의 깊이를 설정해 줄 수 있다.

## p_boxplot에 x축에 대계열, y축에 취업률_계, fill을 대계열로 매핑, 미적 요소를 설정한 geom_boxplot레이어를 생성
p_boxplot + 
  geom_boxplot(aes(x = 대계열, y = 취업률_계, fill = 대계열), linetype = 2, notch = TRUE, notchwidth = 0.2, outlier.shape = 3) 

## p_boxplot에 x축에 대계열, y축에 취업률_계, fill을 대계열로 매핑, 미적 요소를 설정한 geom_boxplot레이어를 생성
p_boxplot + 
  geom_boxplot(aes(x = 대계열, y = 취업률_계, fill = 대계열), linetype = 2, notch = TRUE, notchwidth = 0.2, outlier.shape = 3, varwidth = TRUE) 

댓글