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): 점 크기의 범위를 설정하고 크기를 정규화합니다.
- sns.relplot()을 사용하여 상관계수를 점으로 표현한 플롯을 그립니다.
- 그래프 최종 조정:
- X축과 Y축 레이블을 제거하고 그래프의 좌우 경계를 제거하여 깔끔하게 만듭니다.
- X축 레이블(네트워크 이름)을 회전시켜 가독성을 높입니다.
사례 적용
- 뇌 연구에서 신경망 연결성 분석
- 연구자가 특정 뇌 영역들 간의 동시 활동 패턴을 분석하고자 할 때 이 시각화를 사용할 수 있습니다.
- 예를 들어 알츠하이머 환자와 건강한 사람들의 뇌 네트워크 연결성을 비교함으로써 질병 진행 과정에서 어떤 영역들이 더 큰 영향을 받는지 파악할 수 있습니다.
- 금융 포트폴리오 최적화
- 투자자가 여러 주식 종목 간 상관성을 분석하여 포트폴리오 다각화를 계획할 때 사용할 수 있습니다.
- 예를 들어 서로 상관성이 낮은 자산들을 선택함으로써 리스크를 줄이고 안정적인 수익률을 기대할 수 있습니다.
- 소셜 미디어 마케팅 전략
- 소셜 미디어에서 특정 해시태그나 주제에 대한 사용자 참여도를 분석하고자 할 때 이 시각화를 사용할 수 있습니다.
- 예를 들어 특정 제품에 대해 긍정적인 반응을 보이는 사용자 그룹과 부정적인 반응을 보이는 사용자 그룹 간의 연결성을 파악함으로써 맞춤형 마케팅 전략을 세울 수 있습니다.
'[업무 지식] > Seaborn' 카테고리의 다른 글
[histplot] Stacked histogram on a log scale (0) | 2024.11.09 |
---|---|
[jointplot] Hexbin plot with marginal distributions (1) | 2024.11.09 |
[violinplot] Grouped violinplots with split violins (0) | 2024.11.09 |
[barplot] Grouped boxplots (0) | 2024.11.09 |
[catplot] Grouped barplots (0) | 2024.11.09 |