바이오 대표

[ matplotlib #11 ] Python matplotlib.pyplot 기본 코드 한번에 정리_11 (Box plot 박스 플롯) 본문

Python/matplotlib

[ matplotlib #11 ] Python matplotlib.pyplot 기본 코드 한번에 정리_11 (Box plot 박스 플롯)

바이오 대표 2022. 7. 11. 23:24

 

Matplotlib Box plot 박스 플롯

정리 1~ 10 에서 python matplotlib.pyplot 의 전반적인 설명과 plotting plt.plot( ), marker, line, label, grid, subplot, scatter, bars plot, pie chart, heatmap 에 대해서 살펴보았습니다. 이번 글에서는 해당 라이브러리로 Box plot 박스플롯 에 대한 설명합니다. 

  • box plot  plt.boxplot( )
  • argument
    • notched notch = True
    • whis 조절 whis = number
    • 수평 박스 vert = False

 

 

Box plot 박스 플롯 그리기

Box plot (박스 플롯)은 Box-whisker plot 이라고도 불리며, 수치 데이터를 표현합니다. 해당 그래프를 통해 데이터의 최솟값, 제1 사분위 수 (Q1), 제 2 사분위 수 (Q2), 제 3 사분위 수 (Q3) 그리고 최대값을 표현합니다. outlier도 표시할 수 있기에, statistical 분석을 위해 데이터를 확인 하는 단계에서 많이 사용합니다.     

plt.boxplot( array or  a sequence of vectors)

 

 

먼저 box plot 을 그리기에 앞서 그래프가 무엇을 visualize 하는지 알아보겠습니다.  해당 그래프는 Q1 ~ Q3를 직사각형으로, 그 외의 값은 수염 (Whisker)로 표햔합니다. default로 계산을 벗어나면 outlier도 표시합니다. 

 

예시)  plt.boxplot( ) 의 설정들을 default 로 하면 다음과 같은 그래프를 보입니다.

import matplotlib.pyplot as plt
import numpy as np

data_a = np.random.normal(0, 2.0, 1000)    # 평균이 0이고, 표준편차가(sd) 가 2.0인 1000의 배열 
data_b = np.random.normal(-3.0, 1.5, 500)
data_c = np.random.normal(1.2, 1.5, 1500)

plt.boxplot([data_a, data_b, data_c])
plt.show()

 

Notched 

plt.boxplot() 의 argument notch ( 흠이 있는) = True로 설정하면 Q1-Q3 이 직사각형이 아닌 notched 형태로 모양을 바꿀 수 있습니다. 이때 흠이 파여있는 곳은 median (중앙값) 의 95% 신뢰 구간 즉, 95% confidence interval (CI)을 나타냅니다. 

...
plt.boxplot([data_a, data_b, data_c], notch=True)
...

 

 

Whis 

whis 는 upper bound 와 lower bound 를 설정해 줄 때 사용합니다. default 값은 1.5이고, 이 값을 크게 한다는 뜻은 더 큰 이상치 (outlier)를 수염 (whisker) 안에 포함한다는 뜻입니다.  whis = number 을 통해 값을 설정할 수 있습니다.

* upper bound의 계산법은  Q3 + whis *(Q3 - Q1), lower bound 의 계산법은 Q1 - whis *(Q3 - Q1) 입니다. 

...
plt.boxplot([data_a, data_b, data_c], notch=True, whis = 2.5)
...

 

 

수평 그래프 그리기 

box plot 은 수평으로도 나타낼 수 있습니다. vert = False argument 을 이용하면 됩니다. 

...
plt.boxplot([data_a, data_b, data_c], notch=True, vert = False)
...