Seaborn의 KDE(커널 밀도 추정) 플롯에 데이터의 중앙값을 시각적으로 표시하면 분포의 중심을 한눈에 파악할 수 있습니다. 이 글에서는 KDE 플롯 위에 중앙값 위치를 수직선으로 표시하는 방법을 단계별로 알아보겠습니다.
구현 단계
- 그림 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- NumPy를 사용하여 무작위 데이터를 생성합니다.
- 생성된 데이터의 중앙값(median)을 계산합니다.
- kdeplot() 함수로 음영 처리된 밀도 곡선을 그립니다.
- axvline() 메서드를 사용해 중앙값 위치에 수직선을 추가합니다.
- show() 메서드로 최종 그림을 화면에 출력합니다.
예제 코드
import numpy as np import seaborn as sns from matplotlib import pyplot as plt # 그림 크기 및 자동 레이아웃 설정 plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True # 정규분포를 따르는 무작위 데이터 30개 생성 data = np.random.randn(30) # 데이터의 중앙값 계산 xmedian = np.median(data) # 음영 처리된 KDE 플롯 그리기 k = sns.kdeplot(x=data, shade=True) # 중앙값 위치에 빨간색 수직선 표시 plt.axvline(xmedian, c='red') plt.show()
실행 결과
코드를 실행하면 파란색 음영으로 채워진 KDE 밀도 곡선이 그려지고, 데이터의 중앙값 위치에 빨간색 수직선이 표시됩니다. 이를 통해 분포가 어떤 지점을 중심으로 형성되어 있는지 직관적으로 확인할 수 있습니다.
핵심 포인트
np.median()은 데이터 배열의 중앙값을 반환하는 NumPy 함수입니다. sns.kdeplot()의 shade=True 옵션은 곡선 아래 영역을 색으로 채워 밀도를 더 잘 보이게 해줍니다. 마지막으로 plt.axvline()은 x축의 특정 값 위치에 수직선을 그리는 Matplotlib 함수로, 중앙값뿐만 아니라 평균이나 특정 임계값을 표시할 때도 유용하게 활용할 수 있습니다.