본문 바로가기

시각화/Seaborn

Seaborn - 패싯 그리드 : FacetGrid

반응형
다양한 범주형 값을 가지는 데이터를 시각화하는데 좋은 방법

행, 열 방향으로 서로 다른 조건을 적용하여 여러 개의 서브 플롯 제작

각 서브 플롯에 적용할 그래프 종류를 map() 메서드를 이용하여 그리드 객체에 전달



[그리는 방법]

1. FacetGrid에 데이터프레임과 구분할 row, col, hue 등을 전달해 객체 생성

2. 객체(facet)의 map 메서드에 그릴 그래프의 종류와 종류에 맞는 컬럼 전달
예시 - distplot의 경우 하나의 컬럼 // scatter의 경우 두개의 컬럼

 

 

 

 

 

데이터 불러오기

 

https://steadiness-193.tistory.com/196

 

Seaborn - 이차원 밀집도 : kdeplot

이차원 밀집도는 두개의 컬럼을 이용하며 kdeplot으로 그릴 수 있다. seaborn의 타이타닉 데이터에서 https://steadiness-193.tistory.com/78 판다스 - 특잇값(outlier) 찾아내기 : Tukey Fences, Z-score https:/..

steadiness-193.tistory.com

 

위 포스팅에서 아웃라이어와 누락값들을 제거한 타이타닉 데이터프레임을 이용한다.

 

 

 

 

스타일 설정

 

 

 

 

 

 

 

 

col

히스토그램 (plt.hist)

 

 

col 인자에 성별을 전달함으로써 좌측엔 남성, 우측엔 여성의 히스토그램 그래프가 그려진다.

 

직접 bins를 이용해 구간을 설정할 수도 있다.

 

 

 

 

 

 

 

색깔 조정

color

 

 

map 메서드 인자에 color를 이용해 전체 색을 바꿀 수 있다.

 

 

 

 

 

 

 

 

 

sns.distplot

 

 

히스토그램이라는 결과물은 같지만 kde나 rug 옵션을 줄 수 있는 sns.distplot을 이용해도 된다.

 

 

 

 

 

 

 

 

 

col, row

hist

 

 

컬럼엔 성별을, 로우엔 생존 여부를 넣었다.

 

두 컬럼 집단별 요금의 분포를 볼 수 있게 됐다.

 

col, row 인잣값에 따라 survived=0 | sex='male' 와 같은 방법으로 그래프를 구분한다.

 

 

 

 

 

 

 

 

 

col, row

regplot

 

 

이번엔 두개의 컬럼의 관계를 볼 수 있는 regplot으로 그려봤다.

 

col, row에 쓴 컬럼까지 고려하면 총 4개의 컬럼을 이용한 셈이다.

 

(성별, 생존여부)별로 요금과 나이의 산점도를 볼 수 있다.

 

 

 

 

 

 

 

 

 

col, hue

regplot

 

 

컬럼별로는 성별을 구분하고

 

색깔별로는 생존여부를 구분한다.

 

그 구분들별로 요금과 나이의 분포를 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

col, hue - 범례 추가

.add_legend()

 

 

그냥 hue만 있으면 뭐가 뭔지 모르니 수동으로 범례를 추가해주면

 

더 편하게 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

col, hue - 색상 자동 변경

palette

 

 

palette에 Set1을 넣어 자동으로 빨강, 파랑으로 색을 바꿔줄 수 있다.

 

 

 

 

 

 

 

 

 

col, hue - hue 순서 변경

hue_order

 

 

hue_order를 통해 hue에 전달한 생존 여부별 구분값의 순서를 바꿔줄 수 있다.

 

기존엔 자동으로 0이 빨강이었지만 지금은 1이 빨강이다.

 

 

 

 

 

 

 

 

 

col, hue - 색상 수동 변경

palette

 

 

palette 옵션에 hue 값에 맞는 딕셔너리를 전달하면 색상을 원하는대로 바꿔줄 수 있다.

 

 

 

 

 

 

 

 

 

 

col, hue - xlabel, ylabel 추가

.set_axis_labels()

 

 

.set_axis_labels에 차례대로 x축, y축에 넣을 label을 입력해주면 된다.

 

 

 

 

 

 

 

 

 

col, hue - x, y축 경계 설정

.set(xlim=(N, N), ylim=(N, N))

 

 

기존의 서브 플롯은 자동으로 0 미만으로 경계가 설정되어있다.

 

0부터 경계를 설정하니 조금 잘려서 나오는 것처럼 보인다.

 

 

 

 

 

 

 

 

 

 

col, row, hue

regplot

 

 

컬럼으론 성별을, 로우로는 생존여부를

 

hue 옵션으로는 등급을 전달해 구분했다.

 

그 구분들 별로 요금과 나이의 분포를 확인했으니 총 5개 컬럼을 사용한 셈이다.

 

 

 

 

 

 

 

 

 

 

col, row, hue - 범례 추가

.add_legend()

 

이 역시 hue 옵션의 설명을 추가해줘야 보기 편해진다.

 

 

 

 

 

 

 

 

 

 

col, row, hue - 서브플롯간 간격 조정

.fig.subplots_adjust(wspace=.n, hspace=.n)

 

 

지금은 wspace와 hspace의 값을 0.5로 설정해서

 

서브 플롯간의 간격을 좁혀줬다.

 

 

 

반응형