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

Python Matplotlib로 프로필 히스토그램 그리기 – Seaborn regplot 활용법

프로필 히스토그램(profile histogram)은 각 빈(bin)에 해당 구간 데이터들의 평균값을 담는 특수한 형태의 히스토그램입니다. 일반 히스토그램이 구간별 개수(count)를 표시하는 것과 달리, 프로필 히스토그램은 구간별 평균을 보여주기 때문에 두 변수 간의 관계를 직관적으로 파악할 때 유용합니다.

Python에서 프로필 히스토그램 그리는 방법

Python에서 프로필 히스토그램을 그리려면 Seaborn 라이브러리의 regplot 메서드를 활용하면 됩니다. x_bins 파라미터를 사용하면 x 변수가 자동으로 이산형 빈으로 나뉘고, 각 빈 안의 y 값 평균이 마커와 오차 막대(error bar)와 함께 표시됩니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 주변의 여백(padding)을 조정합니다.
  • Numpy를 사용하여 x, y 데이터 포인트를 생성합니다.
  • seaborn.regplot으로 데이터와 선형 회귀 모델 피팅 결과를 함께 시각화합니다. x_bins 파라미터로 x 변수를 이산형 빈으로 나누고, fit_reg=True를 지정하면 x와 y 변수 간의 회귀 모델이 함께 그려집니다.
  • plt.show() 메서드를 호출하여 그림을 화면에 출력합니다.

예제 코드

import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt

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

x = np.random.uniform(-5, 5, 1000)
y = np.random.normal(x**2, np.abs(x) + 1)

sns.regplot(x=x, y=y, x_bins=20, marker='o', fit_reg=True)

plt.show()

코드 설명

  • np.random.uniform(-5, 5, 1000): -5부터 5 사이의 균등 분포에서 1,000개의 x 값을 생성합니다.
  • np.random.normal(x**2, np.abs(x) + 1): 평균이 x²이고 표준편차가 |x|+1인 정규 분포에서 y 값을 생성합니다.
  • x_bins=20: x 변수를 20개의 빈으로 나누어 각 빈의 y 평균을 계산합니다.
  • marker='o': 데이터 포인트를 원형 마커로 표시합니다.
  • fit_reg=True: 전체 데이터에 대한 선형 회귀선을 함께 표시합니다.

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과가 생성됩니다.

Python Matplotlib로 프로필 히스토그램 그리기 – Seaborn regplot 활용법