본문 바로가기
데이터 분석/시각화

[Seaborn] 10. 산점도와 회귀 직선을 동시에 그리기 (feat. lmplot)

by 부자 꽁냥이 2022. 8. 13.

안녕하세요~ 꽁냥이에요. 오늘은 Seaborn의 lmplot(맨 앞글자 L 소문자입니다.  i 대문자 아니에요)을 이용하여 산점도와 회귀 직선을 동시에 그리는 방법을 알아보겠습니다.

 

- 목차 -

1. Seaborn lmplot 기본

2. Seaborn lmplot 다양한 기능

 

Matplotlib에서 산점도에 회귀 직선을 포함시키는 방법이 궁금하신 분들은 아래 포스팅을 참고해주세요.

 

[Matplotlib Tip] 2. 산점도에 회귀 직선(곡선) 포함시키기

 

[Matplotlib Tip] 2. 산점도에 회귀 직선(곡선) 포함시키기

안녕하세요~ 꽁냥이에요. 은근 많이 써먹을 것 같은 Matplotlib 관련 소소한 팁 2번째 시간인데요. 산점도를 그려볼 때 일반적인 트렌드를 확인하거나 변수간 상관관계를 보기 위하여 회귀 직선을

zephyrus1111.tistory.com


   1. Seaborn lmplot 기본

lmplot은 데이터프레임 구조를 갖는 데이터를 data 인자에 넣어줘야 합니다. 그리고 x, y축에 표시할 칼럼명을 지정해야 합니다. 이때 칼럼명은 데이터프레임이 갖고 있는 칼럼이어야 합니다.

 

import seaborn as sns

sns.set_theme(color_codes=True)
tip_df = sns.load_dataset('tips')

sns.lmplot(x='total_bill', y='tip', data=tip_df)

 

lmplot은 fit_reg를 통하여 회귀 직선을 포함시키지 않을 수도 있어요.

 

sns.lmplot(x='total_bill', y='tip', data=tip_df,
           fit_reg=False, ## 회귀 직선 포함 여부
          )

 

 

lmplot은 또한 회귀 직선이 아닌 lowess 곡선을 추가할 수 있어요.

 

sns.lmplot(x='total_bill', y='tip', data=tip_df,
           lowess=True, ## lowess 곡선
          )

 

이외에도 markers 인자를 통해 마커 모양을 변경할 수 있고 line_kws, scatter_kws를 통해 라인 스타일과 산점도 색상을 바꿀 수 있어요. 아래 코드를 통해 그 사용법을 확인해보세요.

 

sns.lmplot(x='total_bill', y='tip', data=tip_df,
           markers='+', ## 마커 스타일 변경
           line_kws={'color':'red','linestyle':'--' },## 직선 스타일 변경
           scatter_kws={'color':'green'} ## 점 색상 변경
          )

 


   2. Seaborn lmplot 다양한 기능

1) 범주를 색상으로 표현(hue, hue_order)

hue를 이용하면 좀 더 세분화된 그래프를 그릴 수 있는데요. hue로 설정된 범주의 수만큼 색상으로 세분화하여 시각화할 수 있어요. 이때 hue_order를 설정하면 색상 적용 순서를 정할 수 있지요. 또한 markers 인자에 hue에 설정된 범주 수만큼 마커 모양을 설정하면 순서대로 모양을 바꿀 수 있습니다.

 

sns.lmplot(x='total_bill', y='tip', data=tip_df,
           hue='smoker',
           hue_order=['No', 'Yes'],
           markers=['+', '*']
          )

 

2) 분할하여 그리기(col, row)

col 인자에 범주형 칼럼을 사용하면 범주 수만큼 그래프가 생성됩니다. 이때 col_wrap을 이용하여 그래프 칼럼 수를 조절할 수 있어요.

 

sns.lmplot(x='total_bill', y='tip', data=tip_df,
           hue='day', ## 각 그래프 별로 색상 지정
           col='day', ## day에 포함된 범주 수만 큼 그래프 생성
           col_wrap=2, ## 그래프 칼럼 개수
          )

 

 

col 인자와 함께 row 인자를 설정하면 2 범주 산점도를 그릴 수 있습니다. 이때 그래프는 (col 범주 수) X (row 범주 수) 만큼 그려집니다.

 

sns.lmplot(x='total_bill', y='tip', data=tip_df,
           hue='day', ## 각 그래프 별로 색상 지정
           col='day', ## day에 포함된 범주 수만 큼 그래프 생성
           row='sex', ## 행으로 성별 구분
          )

 


이번 포스팅에서는 Seaborn에서 산점도와 회귀 직선을 동시에 그리는 방법을 알아보았는데요. 이 부분은 데이터 결과 시각화할 때 많이 사용되므로 꼭 알아두세요~~ 지금까지 꽁냥이었습니다. 감사합니다.

 


댓글


맨 위로