본문 바로가기
재미로 하는 코딩

시각화 뽀개기3

by 헬푸밍 2023. 2. 5.

Multivariate views on complex datasets(복잡한 데이터셋의 다변량 시각화)

일단 필요 라이브러리를 호출하고..

# Import seaborn
import seaborn as sns
%matplotlib inline

seaborn에 내장되어 있는 펭귄 데이터셋을 보자!

344마리의 펭군을...

종류, 사는 섬,  부리 길이, 부리 깊이?, 날개 길이, 무게, 성별 조사를 한 데이터 셋 같다?

 

 

 

jointplot을 사용해 날개 길이와 부리 길이의 관계를 보자!(hue는 species로 해서 종별로 나눠서 보자!)

sns.jointplot(data=penguins, x="flipper_length_mm", y="bill_length_mm", hue="species")

대체로 날개 길이가 길면 부리 길이도 긴 것을 확인했다!

또 Gentoo종이 날개 길이가 대체로 길고...

Chinstrap종이 부리 길이가 대체로 긴 것을 확인 할 수 있다!

 

이번엔 pairplot을 통해 모든 변수의 상관관계를 시각화 해보면...

sns.pairplot(data=penguins, hue="species")

각 변수의 상관관계를 모두 확인해 볼 수 있다!

날개 길이와 몸무게의 상관관계가 가장 강해보인다!

 

Lower-level tools for building figures(시각화 위한 저수준 도구)

이번엔 펭귄 데이터에 대한 복잡한 그림을 그려볼건데...

천천히 하나씩 추가하면서 그려보자!

g = sns.PairGrid(penguins, hue="species", corner=True)

위와 같이 코드를 작성해 주면

빈 공간이 생성된다!

coner=True로 지정해줘서 대칭되는 부분이 잘렸다!

따라서 먼저 그린 그림에서와 같이 겹치는 부분을 없앨 수 있다!

코드를 추가해서 kdeplot을 그려주는데...

KDE는 Kernel Density Estimator의 줄임말로 커널 밀도 추정...? 이라고 한다?

g = sns.PairGrid(penguins, hue="species", corner=True)
g.map_lower(sns.kdeplot, hue=None, levels=5, color=".2")

이렇게 등고선 같은 것이 그려지는데...

map_lower여서 대각선 아래부분에 그리고...

leves=5라서 층이 5개로 나뉘고...

color는 0에 가까울수록 진해지고 1에 가까울수록 옅어지는 것 같다!

 

다시 코드를 추가해서...

산점도를 같은 위치에다 그려주는데...

g = sns.PairGrid(penguins, hue="species", corner=True)
g.map_lower(sns.kdeplot, hue=None, levels=5, color=".2")
g.map_lower(sns.scatterplot, marker="+")

marker='+'로 지정해서 +로 점을 찍어놨다!

 

코드를 한 줄 더 추가해서 각 변수의 히스토그램을 그려준다!

g = sns.PairGrid(penguins, hue="species", corner=True)
g.map_lower(sns.kdeplot, hue=None, levels=5, color=".2")
g.map_lower(sns.scatterplot, marker="+")
g.map_diag(sns.histplot, element="step", linewidth=0, kde=True)

map_diag를 통해 대각선에 그려주었고...

element는 bars, step, poly가 가능한데...

그중에서 step(막대그래프인데 붙어있고 경계가 없는 모습?)으로 설정해줬는데

linewidth=0이라서 bars랑 큰 차이를 못느끼는...? 그런 부분이다!

그래서 차이를 보려고 linewidth=1로 설정해서 그래프를 봤다!

순서대로 bars, element, poly로 그려본 것이다!

 

암튼... linewidth=0으로 히스토그램을 구성하는 빈도수 바깥 테두리 선을 없게 만들었고...

kde=True로 kde곡선도 같이 그려줬다!

 

코드를 한 줄 더 추가해서

범례를 넣는 코드를 추가했다!

g = sns.PairGrid(penguins, hue="species", corner=True)
g.map_lower(sns.kdeplot, hue=None, levels=5, color=".2")
g.map_lower(sns.scatterplot, marker="+")
g.map_diag(sns.histplot, element="step", linewidth=0, kde=True)
g.add_legend(frameon=True)

frameon=True를 통해 범례 바깥 네모난 상자로 프레임을 만들어줬다!

 

마지막으로 범례위치 조정을 해줬다!

g = sns.PairGrid(penguins, hue="species", corner=True)
g.map_lower(sns.kdeplot, hue=None, levels=5, color=".2")
g.map_lower(sns.scatterplot, marker="+")
g.map_diag(sns.histplot, element="step", linewidth=0, kde=True)
g.add_legend(frameon=True)
g.legend.set_bbox_to_anchor((.61, .6))

이렇게 범례 위치가 조정된 상태로 그림이 완성!

 

차례차례해봤는데도... 할 수 있을까? ㅋㅋㅋ

 

암튼 완성된 그림이 지리긴 한다...


참조 사이트

https://seaborn.pydata.org/tutorial/introduction.html#multivariate-views-on-complex-datasets

 

An introduction to seaborn — seaborn 0.12.2 documentation

An introduction to seaborn Seaborn is a library for making statistical graphics in Python. It builds on top of matplotlib and integrates closely with pandas data structures. Seaborn helps you explore and understand your data. Its plotting functions operate

seaborn.pydata.org

 

'재미로 하는 코딩' 카테고리의 다른 글

시각화 뽀개기5  (0) 2023.02.07
시각화 뽀개기4  (0) 2023.02.05
시각화 뽀개기2  (0) 2023.02.04
시각화 뽀개기1  (0) 2023.02.04
네이버 영화별 평점 수집해보기  (0) 2023.01.15

댓글