Matplotlib 로 사용자 정의 가능한 상자 그림 만들기

Beginner

This tutorial is from open-source community. Access the source code

소개

상자 그림 (Boxplot) 은 데이터 그룹을 사분위수를 통해 시각적으로 표현한 것입니다. 최소값, 제 1 사분위수, 중앙값, 제 3 사분위수, 최대값으로 구성된 다섯 숫자 요약 (five-number summary) 을 기반으로 데이터의 분포를 보여주는 데 사용됩니다. 이 튜토리얼에서는 Python 의 Matplotlib 라이브러리를 사용하여 상자 그림을 생성하고 사용자 정의하는 방법을 배우겠습니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기 및 데이터 생성

필요한 라이브러리를 가져오고 가짜 데이터를 생성하는 것으로 시작합니다.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook

## Generate fake data
np.random.seed(19680801)
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')

상자 그림 통계 계산

matplotlib.cbook 모듈의 boxplot_stats() 함수는 상자 그림에 필요한 통계를 계산합니다. 데이터와 레이블을 매개변수로 전달합니다.

## Compute boxplot stats
stats = cbook.boxplot_stats(data, labels=labels, bootstrap=10000)

상자 그림 통계 사용자 정의

2 단계에서 계산된 상자 그림 통계 중 임의의 값을 수정할 수 있습니다. 이 예제에서는 각 세트의 중앙값을 전체 데이터의 중앙값으로 설정하고, 평균을 두 배로 늘립니다.

for n in range(len(stats)):
    stats[n]['med'] = np.median(data)
    stats[n]['mean'] *= 2

기본 상자 그림 생성

Matplotlib 의 bxp() 함수를 호출하여 기본 상자 그림을 생성할 수 있습니다. 계산된 통계를 매개변수로 전달합니다.

## Create a basic boxplot
plt.bxp(stats)
plt.show()

다양한 요소의 표시 전환

bxp() 함수의 다양한 매개변수를 사용하여 상자 그림의 다양한 요소 표시를 전환할 수 있습니다. 이 예제에서는 평균, 상자, 캡, 노치 (notches), 이상치 (fliers) 를 표시하거나 숨기는 방법을 보여줍니다.

## Toggle the display of different elements
plt.bxp(stats, showmeans=True, showbox=False, showcaps=False, shownotches=True, showfliers=False)
plt.show()

다양한 요소의 표시 사용자 정의

bxp() 함수의 다양한 매개변수를 사용하여 상자 그림의 다양한 요소 표시를 사용자 정의할 수 있습니다. 이 예제에서는 상자, 중앙값, 이상치 (fliers), 평균 점, 평균 선을 사용자 정의하는 방법을 보여줍니다.

## Customize the display of different elements
boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
flierprops = dict(marker='o', markerfacecolor='green', markersize=12, linestyle='none')
medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
meanpointprops = dict(marker='D', markeredgecolor='black', markerfacecolor='firebrick')
meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')

plt.bxp(stats, boxprops=boxprops, flierprops=flierprops, medianprops=medianprops, meanprops=meanpointprops, meanline=True, showmeans=True)
plt.show()

요약

이 튜토리얼에서는 Python 의 Matplotlib 라이브러리를 사용하여 상자 그림을 생성하고 사용자 정의하는 방법을 배웠습니다. 또한 다양한 요소의 표시를 전환하고 표시를 사용자 정의하는 방법도 배웠습니다. 상자 그림은 데이터의 분포를 시각화하고 이상치 (outliers) 를 식별하는 데 유용한 도구입니다.