본문 바로가기
[업무 지식]/Seaborn

[relplot] Scatterplot heatmap

by 에디터 윤슬 2024. 11. 9.
import seaborn as sns
sns.set_theme(style="whitegrid")

# Load the brain networks dataset, select subset, and collapse the multi-index
df = sns.load_dataset("brain_networks", header=[0, 1, 2], index_col=0)
df

데이터 정제

used_networks = [1, 5, 6, 7, 8, 12, 13, 17]
used_columns = (df.columns
                  .get_level_values("network")
                  .astype(int)
                  .isin(used_networks))
df = df.loc[:, used_columns]

df.columns = df.columns.map("-".join)
df

seaborn

# Compute a correlation matrix and convert to long-form
corr_mat = df.corr().stack().reset_index(name="correlation")

# Draw each cell as a scatter point with varying size and color
g = sns.relplot(
    data=corr_mat,
    x="level_0", 
    y="level_1", 
    hue="correlation", 
    size="correlation",
    palette="vlag", 
    hue_norm=(-1, 1), 
    edgecolor=".7",
    height=10, 
    sizes=(50, 250), 
    size_norm=(-.2, .8)
)

# Tweak the figure to finalize
g.set(xlabel="", ylabel="", aspect="equal")
g.despine(left=True, bottom=True)
g.ax.margins(.02)
for label in g.ax.get_xticklabels():
    label.set_rotation(90)

 

설명

  • 상관행렬 계산:
    • 선택한 네트워크들 간의 상관행렬을 계산합니다. 이 행렬은 각 네트워크 간의 상관계수를 나타냅니다.
    • stack() 함수를 사용하여 행렬을 길게 변환한 후 reset_index()로 인덱스를 재설정하고 correlation이라는 열 이름으로 저장합니다.
  • 상관행렬 시각화:
    • sns.relplot()을 사용하여 상관계수를 점으로 표현한 플롯을 그립니다.
      • x="level_0", y="level_1": 두 네트워크 간의 관계를 X축과 Y축으로 설정합니다.
      • hue="correlation": 점의 색상을 상관계수에 따라 설정합니다. 색상 팔레트는 vlag를 사용하며 양/음의 상관관계를 구분합니다.
      • size="correlation": 점의 크기를 상관계수에 따라 설정합니다. 상관계수가 클수록 점이 커집니다.
      • palette="vlag", hue_norm=(-1, 1): 색상 팔레트를 설정하고 색상의 범위를 -1에서 +1로 정규화합니다.
      • sizes=(50, 250), size_norm=(-.2, .8): 점 크기의 범위를 설정하고 크기를 정규화합니다.
  • 그래프 최종 조정:
    • X축과 Y축 레이블을 제거하고 그래프의 좌우 경계를 제거하여 깔끔하게 만듭니다.
    • X축 레이블(네트워크 이름)을 회전시켜 가독성을 높입니다.

사례 적용

  1. 뇌 연구에서 신경망 연결성 분석
    • 연구자가 특정 뇌 영역들 간의 동시 활동 패턴을 분석하고자 할 때 이 시각화를 사용할 수 있습니다.
    • 예를 들어 알츠하이머 환자와 건강한 사람들의 뇌 네트워크 연결성을 비교함으로써 질병 진행 과정에서 어떤 영역들이 더 큰 영향을 받는지 파악할 수 있습니다.
  2. 금융 포트폴리오 최적화
    • 투자자가 여러 주식 종목 간 상관성을 분석하여 포트폴리오 다각화를 계획할 때 사용할 수 있습니다.
    • 예를 들어 서로 상관성이 낮은 자산들을 선택함으로써 리스크를 줄이고 안정적인 수익률을 기대할 수 있습니다.
  3. 소셜 미디어 마케팅 전략
    • 소셜 미디어에서 특정 해시태그나 주제에 대한 사용자 참여도를 분석하고자 할 때 이 시각화를 사용할 수 있습니다.
    • 예를 들어 특정 제품에 대해 긍정적인 반응을 보이는 사용자 그룹과 부정적인 반응을 보이는 사용자 그룹 간의 연결성을 파악함으로써 맞춤형 마케팅 전략을 세울 수 있습니다.