[33일차]seaborn plot 종류 - Relplot (Relational)

김준석·2024년 1월 11일
0
  • Relplot은 데이터 세트의 변수가 어떻게 연관되어 있는지, 그리고 이러한 관계가 다른 변수에 어떻게 의존하는지 이해하는데 도움을 주는 시각화가 가능하다.
  • Relplot에서 사용 가능한 플롯은 scatter plot(산점도)과 line plot(선형)이 있다.
  • 색상, 크기 및 스타일을 사용하여 최대 3개의 추가 변수 매핑이 가능하다.

실습 코드

tips = sns.load_dataset("tips")
tips

데이터는 seaborn에서 제공하는 tips을 가져왔다.

산점도 플롯 만들기

sns.replot을 이용해 산점도를 만들 수 있다.

sns.relplot(data=tips, x='total_bill', y='tip')

인자값에는 data, x에 들어갈 컬럼, y에 들어갈 컬럼을 넣어준다.

이는 아래 sns.scatterplot()과 동일한 결과를 가져온다.

sns.scatterplot(data=tips, x='total_bill', y='tip')

와..matplotlib보다 훨씬 쉽다!!!!!!!!!!

선형 플롯 만들기

시간과 같이 지속성을 가진 변수와 다른 변수의 관계를 나타낼 때 효과적!

위와 같은 데이터를 선형 그래프로 만들어보자

#line plot
sns.relplot(data=dowjones, x='Date', y='Price', kind='line')
sns.lineplot(data=dowjones, x='Date', y='Price')

sns.relplot() 에서 인자 kind= 를 ‘line’ 으로 작성해주면 된다.

이는 sns.lineplot 과 동일한 결과를 가져온다.

🔎x축값은 하나인데 y값이 두개이상일 경우도 있다.

이때 기본적으로 lineplot은 여러 값들을 모아서 평균을 선으로, 95% 신뢰구간을 색으로 표현함

실습을 위해 fmri라는 데이터를 가져왔다.

아래와 같이 timepoint컬럼의 데이터가 18일때 signal컬럼의 값은 다양하다. 이를 선형으로 나타내면

sns.relplot(data='fmri',x='timepoint',y='signal',kind='line')

평균을 선으로!
95%신뢰구간을 색으로 그려진 것을 확인할 수 있다.

  • 이때 신뢰구간을 표시하고 싶지 않다면 errorbar=None 입력
  • 신뢰구간 대신 표준편차 범위로 표시하고 싶다면
    errorbar=’sd’ 입력

스타일 변경

seaborn의 replot() 도 스타일을 변경해 줄 수 있다.

hue= : 컬럼 데이터 별로 나눠서 보여줌(색을 다르게 함.)

size= : 데이터 포인트 크기

style= : 데이터 포인트 스타일

sns.relplot(
	data=tips,
	x='total_bill', y='tip',
	hue='smoker',#smoker 컬럼을 기준으로
	style='time' #time 컬럼을 기준으로 변경
	size = 'size' #size 컬럼을 기준으로
)

이를 잘 사용하면 좋다.

hue=

컬럼의 값을 나눠서 볼 수 있도록 해줌.

hue가 가지는 값이 연속형 변수인 경우 색이 palette 형태로 표현된다.

hue= 인자에 연속성을 갖고 있는 size 컬럼을 넣어보자

sns.replot(data=tips,x='total_bill', y='tip',hue='size')

그럼 위와 같이 색이 점점 변하는 팔레트 형식의 산점도를 볼 수 있다.

size

size를 사용하는 경우 sizes=(a,b)를 통해 점들의 크기를 다양하게 조절할 수 있다.

sns.replot(data=tips,x='total_bill', y='tip',size='size',sizes=(15,200))

sizes=(15,200) : 최소 15~ 최대 200 크기로

palette

  • Palette를 이용하여 선의 색 차이를 조정할 수 있다.
  • light= 값이 커질수록 가장 밝은 색의 명도가 높아짐.
    n_colors= 에는 가질 수 있는 카테고리 개수를 넣어줌.
palette = sns.cubehelix_palette(light=.9, n_colors=6)
sns.relplot(
	x="time", y="firing_rate",
	hue="coherence", style="choice",
	palette=palette,
	kind="line", data=dots
)

이 데이터의 굵기를 size= 인자를 통해 조절해보자

sns.relplot(
	x="time", y="firing_rate",
	hue="coherence", size="choice",
	palette=palette,
	kind="line", data=dots
)

굳!


facet

여러 플롯으로 나눠 분석하는 것.
한번에 여러 플롯을 보여줄 수 있다.

  • 변수가 많아질 수록 한 플롯 안에서 표현하다 보면 가시성이 떨어지고 효과적인 분석이 어려울 수 있다.
  • 이때 facet을 사용!
  • col=이나 row=를 이용해 플롯들을 나누고
    height=를 통해서 플롯의 크기를 조절할 수 있다.

col=코드 사용 예시

sns.relplot(data=tips,x='total_bill', y='tip', hue='smoker',col='time')

col='time' 인자값을 통해 time이라는 컬럼의 데이터를 나눠서 볼 수 있게 된다.
(참고로 time컬럼에는 Lunch, Dinner 두개의 데이터가 있음.)

row= 코드 사용 예시

sns.relplot(data=fmri, x='timepoint, y='signal', hue='subject',
	col='region', row='event', height=3.5,
	kind='line', estimator=None)

region 컬럼과 event로우 인덱스를 기준으로 보면

요렇게 볼 수 있다.

결론

데이터 분석시 시각화를 할 때 나눠서 보는 습관을 기르자!

0개의 댓글