Seaborn 라이브러리를 이용한 KDE Plot 및 2D KDE Plot 그리기

Mozen

·

2023. 10. 21. 18:09

반응형

 

 

1. Seaborn 라이브러리란?

Seaborn은 Python의 데이터 시각화 라이브러리로, Matplotlib을 기반으로 하여 보다 아름답고 의미 있는 데이터 시각화를 위한 편리한 인터페이스를 제공합니다. Seaborn의 주요 특징 및 장점은 다음과 같습니다:

  1. 아름다운 기본 스타일: Seaborn은 Matplotlib의 기본 스타일보다 더 현대적이고 세련된 시각화를 제공합니다. 그리고 기본 색상 팔렛트와 테마가 풍부하여 쉽게 사용할 수 있습니다.
  2. 데이터프레임 호환: Seaborn은 Pandas의 DataFrame과 매우 잘 통합되어 있으므로 데이터 분석 결과를 직접 시각화하기 쉽습니다.
  3. 고급 분포 플롯 도구: 커널 밀도 추정(Kernel Density Estimation, KDE)과 같은 고급 통계 도구를 통합하여 복잡한 데이터 분포를 시각화할 수 있습니다.
  4. 시간 절약: 복잡한 시각화를 몇 줄의 코드로 간단히 생성할 수 있어, 시간을 절약하면서도 고급 시각화를 만들 수 있습니다.
  5. 다양한 플롯 유형: 히트맵, 박스 플롯, 바이올린 플롯, 페어 플롯 등 다양한 고급 차트와 플롯을 쉽게 생성할 수 있습니다.
  6. 통계적 시각화: Seaborn은 데이터의 중심 경향, 분포, 상관 관계 등 통계적 특성을 시각화하는데 중점을 둡니다. 이를 통해 데이터를 깊이 있게 이해하는 데 도움을 줍니다.
  7. 플롯 커스터마이징: Seaborn은 Matplotlib를 기반으로 하기 때문에, 필요한 경우 Matplotlib의 기능을 활용하여 플롯을 세부적으로 커스터마이징할 수 있습니다.

간단한 예제로, Seaborn을 사용하여 히트맵을 그리는 방법은 다음과 같습니다:

import seaborn as sns; sns.set_theme()
import numpy as np

# 임의의 데이터 생성
data = np.random.rand(10, 12)

# 히트맵 그리기
sns.heatmap(data)

Seaborn 라이브러리를 이용한 히트맵 생성 예시



2. Seaborn 라이브러리를 활용한 두 데이터의 KDE 생성

Seaborn 라이브러리를 사용해 두 데이터에 대한 KDE (Kernel Density Estimation)를 그리고, KDE의 중심 좌표를 추출하기 위한 코드를 작성해보겠습니다.

  1. 먼저, 두 데이터셋에 대해 KDE를 그리기 위해 sns.kdeplot를 사용합니다.
  2. KDE의 중심 좌표(즉, 최댓값을 갖는 좌표)를 찾기 위해 scipy의 gaussian_kde 함수를 사용합니다.

다음 코드는 두 데이터셋에 대해 KDE를 그리고, 각 KDE의 최댓값을 갖는 x 좌표(즉 중심 좌표)를 빨간색 점으로 그래프에 표시하는 코드 예제입니다:

반응형
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde

# 샘플 데이터 생성
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2

# 두 데이터에 대한 KDE 그리기
sns.kdeplot(data1, label='Data 1', shade=True)
sns.kdeplot(data2, label='Data 2', shade=True)

# 각 데이터에 대한 KDE의 중심 좌표 찾기
kde1 = gaussian_kde(data1)
kde2 = gaussian_kde(data2)

x1 = np.linspace(min(data1), max(data1), 1000)
x2 = np.linspace(min(data2), max(data2), 1000)

center1 = x1[np.argmax(kde1(x1))]
center2 = x2[np.argmax(kde2(x2))]

print(f"Data 1 KDE Center: {center1}")
print(f"Data 2 KDE Center: {center2}")

# 중심 좌표 표시
plt.scatter([center1, center2], [kde1(center1), kde2(center2)], color='red', s=50, zorder=5)
plt.legend()
plt.show()

Seaborn 라이브러를 활용하여 두 데이터에 대한 커널밀도함수(KDE)를 그리고 중심 좌표를 구한 결과

 

 

3. 두 데이터를 활용한 2D KDE Plot 생성

각 데이터를 x축과 y축으로 설정하고 2D KDE plot을 그리기 위해서는 seaborn의 `kdeplot` 함수를 사용하면 됩니다. 


아래는 `data1`을 x축으로, `data2`를 y축으로 사용하여 2D KDE plot을 그리는 코드입니다. `cmap='Blues'`는 컬러 맵을 파란색 계열로 설정하며, `fill=True`는 KDE plot 내부를 채우기 위한 설정입니다:

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

# 샘플 데이터 생성
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2

# 2D KDE plot 그리기
sns.kdeplot(x=data1, y=data2, cmap='Blues', fill=True)

# 그래프 표시
plt.xlabel('Data 1')
plt.ylabel('Data 2')
plt.title('2D KDE Plot')
plt.show()

Data 1과 Data 2를 활용한 2D KDE Plot

 

반응형