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

Matplotlib로 딕셔너리 데이터를 하나의 그래프에 여러 상자 그림(Boxplot)으로 시각화하는 방법

데이터 분석에서 여러 그룹의 분포를 한눈에 비교하려면 상자 그림(Boxplot)이 매우 유용합니다. 이 글에서는 Python의 Matplotlib 라이브러리를 사용하여 딕셔너리(Dictionary) 형태의 데이터를 하나의 그래프에 여러 개의 상자 그림으로 나타내는 방법을 단계별로 알아보겠습니다.

구현 단계

딕셔너리 데이터로 동일한 그래프 위에 여러 상자 그림을 만들려면 다음 순서대로 진행하면 됩니다.

  • plt.rcParams를 사용해 그림(figure) 크기를 설정하고, 서브플롯 주변과 사이의 여백(padding)을 자동으로 조정합니다.
  • 두 개의 열(column)을 가진 딕셔너리를 생성합니다.
  • plt.subplots()로 figure와 axes 객체를 함께 생성합니다.
  • ax.boxplot() 메서드로 상자 수염 그림(box and whisker plot)을 그립니다.
  • set_xticklabels() 메서드를 사용해 x축 눈금(xtick) 레이블을 딕셔너리의 키 값으로 지정합니다.
  • plt.show() 메서드를 호출하여 그래프를 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt

# 그림 크기 및 자동 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

# 두 개의 열을 가진 딕셔너리 생성
data = {'col1': [3, 5, 2, 9, 1], 'col2': [2, 6, 1, 3, 4]}
fig, ax = plt.subplots()

# 딕셔너리의 값들을 기반으로 상자 그림 생성
ax.boxplot(data.values())

# x축 레이블을 딕셔너리의 키로 설정
ax.set_xticklabels(data.keys())

plt.show()

실행 결과

위 코드를 실행하면 'col1'과 'col2' 두 데이터 그룹의 분포가 각각의 상자 그림으로 표현된 그래프가 출력됩니다. 각 상자는 중앙값(median), 사분위수 범위(IQR), 그리고 이상치(outlier)를 직관적으로 보여주므로, 두 그룹 간의 데이터 분포 차이를 쉽게 비교할 수 있습니다.

Matplotlib로 딕셔너리 데이터를 하나의 그래프에 여러 상자 그림(Boxplot)으로 시각화하는 방법

추가 팁

그래프를 더욱 전문적으로 꾸미고 싶다면 다음 옵션도 활용해 보세요.

  • ax.boxplot(data.values(), patch_artist=True): 상자 내부에 색상을 채워 가독성을 높일 수 있습니다.
  • ax.set_title(), ax.set_xlabel(), ax.set_ylabel(): 그래프 제목과 축 레이블을 추가하면 완성도가 향상됩니다.
  • grid=True 옵션: 배경에 격자선을 추가해 값을 읽기 쉽게 만들어 줍니다.

이처럼 Matplotlib의 boxplot() 함수를 활용하면 딕셔너리 구조의 데이터를 손쉽게 시각화할 수 있으며, 코드 몇 줄만으로 여러 데이터 그룹의 통계적 특성을 명확하게 비교할 수 있습니다.