Scatter Plot

홍찬우·2023년 7월 23일
0

Scatter plot

점을 사용해 두 feature간 관계 파악에 사용
산점도
.scatter() 사용


요소

색, 모양, 크기


목적

상관 관계 확인

  • 왼쪽부터 양의 상관관계, 음의 상관관계, 상관관계 없음

  • 군집
    • 데이터 분석에 있어 많이 사용하는 표현 방식
  • 값 사이의 차이
    • 값 사이의 차이를 설명하며 전처리 필요 유무를 따지기도 함
  • 이상치



정확한 Scatter plot

Overplotting

점이 많아질수록 점의 분포를 파악하기 힘듦

  • 투명도 조정(Tranparency) : 옅은 투명도의 점들이 모이면 진해지는 특성을 이용
  • 지터링(jittering) : 점의 위치를 약간씩 변경
  • 2차원 histogram : x, y축 모두 구간을 나눠 heatmap 형식으로 그림
  • Contour Plot : 분포를 등고선으로 표현
    • 등고선이 좁을수록 데이터가 조밀하고, 넓을수록 반대


점의 요소와 인지

  • 연속은 gradient, 이산은 개별 색상으로 표현

마커

  • 거의 구별하기 힘들며 크기가 고르지 않음 (원, 세모, 네모의 크기 비교가 힘듦)

크기

  • 버블 차트라고 부름
  • 구별은 쉬우나 오용도 쉬움


인과관계 & 상관관계

인과관계와 상관관계는 다름
인과 관계 : 항상 사전 정보와 함께 가정으로 제시할 것


추세선

scatter의 패턴을 유추할 수 있는 선
추세선이 2개 이상 넘어가면 가독성이 떨어짐


그 외

  • Grid 지양
  • 범주형이 포함된 관계에서는 heatmap or bubble chart 이용



실습

ax = fig.add_subplot(111, aspect=1)

  • aspect는 subplot의 가로축, 세로축 scale을 맞춰줌 (1이면 1:1)

ax.scatter(x, y) 로 산점도 그림


정확한 Scatter Plot

ax.scatter(x=iris['SepalLengthCm'], 
           y=iris['SepalWidthCm'],
           c=['royalblue' if yy <= swc_mean else 'gray' for yy in iris['SepalWidthCm']]
          )

  • 조건을 나눠 색을 다르게 줄 수 있음

for species in iris['Species'].unique():
    iris_sub = iris[iris['Species']==species]  # Species 부분집합
    ax.scatter(x=iris_sub['PetalLengthCm'], 
               y=iris_sub['PetalWidthCm'], 
               label=species)

ax.legend()    
plt.show()

  • 반복문을 통해 한 번에 scatter plot을 그려줄 수 있음









※ 모든 이미지 및 코드 출처는 네이버 커넥트재단 부스트캠프 AI Tech 5기입니다. ※

profile
AI-Kid

0개의 댓글