Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib로 박스플롯(Boxplot) 만드는 방법 완벽 가이드

데이터의 분포를 시각적으로 파악하는 데 유용한 박스플롯(Boxplot)은 Matplotlib와 Seaborn 라이브러리를 활용하면 간단하게 만들 수 있습니다. 이 글에서는 Matplotlib로 박스플롯을 생성하는 전체 과정을 단계별로 살펴보겠습니다.

박스플롯 생성 단계

  • 그림 크기 설정 – figure 크기를 지정하고 서브플롯 사이 및 주변의 여백(padding)을 자동으로 조정합니다.
  • xticks 리스트 생성 – x축 눈금 위치로 사용할 데이터 리스트를 준비합니다.
  • 박스플롯 그리기 – 준비한 xticks 데이터를 기반으로 박스플롯을 시각화합니다.
  • 눈금 레이블 설정 – xticks와 xtick 레이블을 지정하고, 가독성을 위해 45° 회전을 적용합니다.
  • 그래프 출력 – show() 메서드를 호출하여 최종 그림을 화면에 표시합니다.

예제 코드

import seaborn as sns
from matplotlib import pyplot as plt

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

xticks = [1, 4, 5, 2, 3]
ax = sns.boxplot(xticks)

ax.set_xticks(xticks)
ax.set_xticklabels(["one", "two", "three", "four", "five"], rotation=45)

plt.show()

코드 설명

먼저 plt.rcParams["figure.figsize"]로 그림 크기를 7.50 × 3.50 인치로 지정하고, figure.autolayout을 True로 설정해 요소들이 겹치지 않도록 자동 배치합니다.

다음으로 [1, 4, 5, 2, 3]이라는 데이터 리스트를 만들고, Seaborn의 sns.boxplot() 함수에 전달하여 박스플롯을 그립니다. 이후 set_xticks()로 눈금 위치를 지정하고, set_xticklabels()로 각 눈금에 "one", "two", "three", "four", "five"라는 레이블을 붙입니다. rotation=45 옵션 덕분에 레이블이 45도 기울어져 표시되어 서로 겹치지 않고 읽기 쉬워집니다.

실행 결과

위 코드를 실행하면 데이터 값 [1, 4, 5, 2, 3]의 분포를 보여주는 박스플롯이 출력됩니다. 중앙값, 사분위수 범위(IQR), 이상치 등을 한눈에 확인할 수 있으며, x축에는 45도 회전된 한글·영문 레이블이 함께 표시됩니다.

마무리

Seaborn의 boxplot() 함수는 Matplotlib 위에서 동작하므로, 두 라이브러리를 함께 사용하면 스타일링과 세부 조정이 매우 편리합니다. 눈금 레이블 회전, figure 크기 조절 등 소개된 기법들을 활용하면 더욱 깔끔하고 전문적인 데이터 시각화 결과물을 얻을 수 있습니다.