Coding Diary.

(데이터분석) seaborn의 투명도, 지터링으로 산점도 과다중첩 해결하기 본문

Coding/Data analysis

(데이터분석) seaborn의 투명도, 지터링으로 산점도 과다중첩 해결하기

life-of-nomad 2024. 5. 27. 09:25
728x90
반응형
차트에 과도하게 많은 점이 존재하거나 주어진 숫자 변수가 불연속적일 경우, 주어진 그대로 산점도를 그려서 정보를 확인하기 어려울 수 있습니다. 차트 상에서 너무 많은 데이터 포인트가 겹치면서 과다 중첩(Overplotting)되어 변수들 간의 관계를 파악하기 어려워지기 때문입니다. 지난 글에 이어 산점도에서 과다 중첩을 해결하는 방법에 대해 알아보겠습니다. 

 

🔻(지난 글) 산점도 그리기🔻

 

(데이터분석) 산점도(scatterplots) 개념 및 matplotlib, seaborn으로 그리기

두 숫자 변수 사이에 존재하는 관계를 조사할 때 대표적으로 활용하는 차트는 산점도입니다.이번 글에서는 산점도와 matplotlib으로 그리는 방법에 대해 알아보겠습니다.  1. 산점도산점도에서

life-of-nomad.tistory.com

1. 지터링(Jittering)

  • 변수 중 하나 또는 두 개가 불연속인 경우 아래와 같이 산점도가 그려질 수 있는데 이런 차트를 해석할 때 지터를 사용합니다. 

  • 지터는 값이 같은 여러 데이터 포인트가 작은 영역에 분산되도록 각 점의 위치에 약간의 임의의 노이즈를 추가하는 것입니다.

 

 

2. 지터링 예시

  • 지난 글에서 사용한 데이터를 이용하여 제조연도와 연료 효율의 관계를 알아보겠습니다.
fuel_econ = pd.read_csv('fuel_econ.csv')
print(fuel_econ.shaple)
fuel_econ.head(6)

 

  • 연도에 대한 통합 연료 효율의 산점도를 살펴보겠습니다.
sb.regplot(data = fuel_econ, x='year', y='comb', fit_reg = False);

  • 회귀선은 효율이 약간 상승하는 추세를 보이지만 명확하게 확인할 수 없습니다.
  • 이런 상황에서 투명도와 지터를 사용할 수 있습니다. 
  • x값이 지터를 적용해야 하므로 x jitter 매개변수를 추가하겠습니다.
  • 값 0.3은 각 x값이 최대 0.3많게 또는 적게 조정됨을 의미합니다. 
  • 이 기능은 seaborn의 replot에서만 적용되며 matplotlib 산점도에서는 적용되지 않습니다. 
sb.regplot(data = fuel_econ, x='year', y='comb', x_jitter = 0.3);

  • 이제 점들이 단일 선이 아닌 특정 너비를 가진 띠에 배열됩니다. 
  • 하지만 여전히 30 아래 점 분포를 파악할 수 없으므로 투명도를 추가해야 합니다. 
  • 딕셔너리 세트의 매개변수를 scatter KWS 매개변수로 설정해야 합니다. 
  • 0은 완전 투명을, 1은 완전 불투명을 의미합니다. alpha를 1/20으로 설정하겠습니다. 
sb.regplot(data = fuel_econ, x='year', y='comb', x_jitter = 0.3, 
		scatter_kws = {'alpha':1/20});

  • 이제 점의 추세가 좀 더 잘 파악됩니다. 
  • 어두운 영역은 투명 점들의 중첩의 결과이며 이러한 영역은 수년동안 값이 조금만 상승됩니다. 
  • 여기서 회귀선은 조금도 변경되지 않았습니다.
  • 즉, 지터링와 투명도는 회귀선 기본 값에 영향을 미치지 않음을 알 수 있습니다. 
728x90
반응형