본문 바로가기
네이버 부스트캠프 AI Tech/Data Visualization

[부스트캠프 AI Tech] matplot lib basics

by 중앙백 2022. 2. 4.

대표 그래프


Bar Plot
  • .bar() / .barh()
  • 범주(category)에 따른 수치 값을 비교하기에 적합한 방법.
  • 여러 그룹의 값을 표현하기 위해서 어떻게 할까?
  1. multiple bar plot : 플롯 자체를 여러 개 그리는 방법
  2. stacked bar plot : 2개 이상의 그룹을 쌓아서 표현하는 방법
  3. overlapped bar plot : 2개 그룹을 겹친 후에 투명도 조절을 통해 표현하는 방법.
  4. grouped bar plot : 그룹별 범주에 따른 bar를 이웃되게 배치하는 방법.
  • Principle of Proportion Ink
    실제 값과 그에 표현되는 그래픽의 잉크 양은 비례해야 한다.
    즉 축의 시작은 zero!
  • 여백과 공간 조정을 통한 적절한 공간 활용도 중요.

 

Line Plot
  • .plot()
  • 연속적으로 변화하는 값을 순서대로 점으로 나타내고 이를 선으로 연결한 그래프
  • 시간/순서에 대한 변화에 적합하여 추세를 살피기 위해 사용. 시계열 분석에 특화
  • 5개 이하의 선을 사용하는 것을 추천.
  • '색상 / 마커 / 선의 종류'를 통해 구별

  • Line plot에 필요한 전처리
    시시각각 변동하는 데이터는 Noise로 인해 패턴 및 추세 파악이 어려움.
    인지적인 방해를 줄이기 위해 smoothing 기법 사용.

  • Line plot은 추세를 보는게 주된 목적
    Bar plot과 달리 축을 0에 둘 필요도 없고 너무 디테일할 필요가 없음
    하지만 지나친 편집은 오히려 오해를 불러일으키므로 일반적인 분석에서는 지양
  • 간격
    간격이 불규칙적할 경우 정보에 오해를 일으킬 수 있음.

  • 보간
    Line은 점과 점을 이어 만드는 요소. 점과 점 사이에 데이터가 없기에 이를 잇는 방법.

  • 이중 축
    한 plot에 대해 2개의 축을 이중 축(dual axis)라 함.
    같은 시간 축에 대해 서로 다른 종류의 데이터를 표현하기 위한 .twinx()
    한 데이터에 대해 다른 단위를 사용할 경우 .secondary_xaxis(), .secondary_yaxis() 사용
    2개의 plot 그리기 >>>>> 이중축 사용

  • 보다 연한 색을 사용해서 uncertainty 표현 가능

 

Scatter Plot
  • .scatter()
  • 점을 사용하여 두 feature간 관계를 표현하는 그래프
  • '색(color) / 모양(marker) / 크기(size)'를 통해 구별

  • scatter plot의 목적
    ⊙ 상관관계 확인(양의 상관관계 / 음의 상관관계 / 없음)
    ⊙ 군집 확인
    ⊙ 값 사이의 차이 확인
    ⊙ 이상치 확인

  • Overplotting의 경우
    점이 많아질수록 분포 파악이 힘들다.
    ⊙ 투명도 조정
    ⊙ 지터링(jittering) : 점의 위치를 조금씩 변경
    ⊙ 2차원 히스토그램 : heatmap을 사용하여 깔끔한 시각화
    ⊙ Contour plot : 분포를 등고선을 사용하여 표현

  • 색 : 이산은 개별 색상으로 연속은 gradient로 표현
  • 마커 : 추천하지 않는 방식
  • 크기 : 버블 차트(bubble chart)라고 부름. 구별하기는 쉽지만 오용하기 쉬움. 관계보다는 각 점간 비율에 초점두자.
  • 인과 관계(causal relation)과 상관 관계(correlation)은 다르다!
    인과 관계는 항상 사전 정보와 함께 가정으로 제시할 것!
  • 추세선을 사용하면 scatter의 패턴을 유추할 수 있음. 추세선이 2개 이상이면 가독성 떨어지니 주의.
  • Grid는 지양
  • 범주형이 포함된 관계에서는 heatmap 또는 bubble chart 추천

 

 

 

 

 

 


차트의 요소


Text

시각화만으로 전달할 수 없는 설명 추가할 수 있고 잘못된 전달에서 생기는 오해를 방지할 수도 있다.

But, 지나친 Text 사용은 오히려 이해를 방해할 수도 있음.

Color
  • 가장 효과적인 채널 구분
  • 화려한 색은 매력적이고 시각화의 요소이긴 하지만, 원하는 인사이트를 전달하는게 제일 중요
  • 사람이 특정 색에 대해 공통적으로 가지는 느낌이 존재

  • Color Palette의 종류
    ⊙ 범주형(Categorial / Discrete / Qualitative): 독립된 색상으로 구성되어 범주형 변수에 사용.
        색의 차이로 구분. 채도, 명도 조정은 지양.
    ⊙ 연속형(Sequential): 정렬된 값을 가지는 순서형, 연속형 변수에 적합. 연속적인 색상을 사용해 값 표현.
        색상은 단일 색조로 표현.
    ⊙ 발산형(Diverge): 연속형과 유사하지만 중앙을 기준으로 발산. 상반된 값/ 서로 다른 2개를 표현하는데 적합.

  • 강조(Highlighting)
    데이터의 다름을 보이기 위함.
    색상 대비(Color Contrast): 강조의 방법 중 하나
    ⊙ 명도 대비: 밝은 색과 어두운 색을 통해 표현 (회색 검정)
    ⊙ 색상 대비: 가까운 색을 배치해 둘의 차이를 크게 표현 (파랑 보라. 빨강 보라)
    ⊙ 채도 대비: 채도의 차이를 통해 채도를 더 높게 표현 (회색 주황)
    ⊙ 보색 대비: 정반대 색상을 사용해 더욱 선명하게 표현 (빨강 초록)
  • 색각 이상(색맹/색약)에 대한 고려 필요

  • HSL
    ⊙ Hue(색조): 색상으로 생각하는 부분. 빨강~보라의 스펙트럼을 0-360으로 표현
    ⊙ Saturate(채도): 무채색과의 차이. 선명도
    ⊙ Lightness(광도): 색상의 밝기
Facet
  • 분할을 의미
  • 인코딩 방식 / 제시하는 feature에 따라 다양한 관점을 전달 가능.

  • Figure & Axes
    Figure : 큰 틀
    Axes : 각 플롯이 들어가는 공간
    cf) DPI(Dots per Inch) : 해상도를 의미

  • N*M subplot 그리기
    subplot(), subplots(), figure()+add_subplot(), add_grid_spec(), subplot2grid(),

  • 내부에 그리기
    ax.insert_axes(), make_axes_locatable(ax)

 

Grid
  • grid는 축과 평행한 선을 사용하여 거리 및 값 정보를 제공
    무채색(color)
    Layer 순서 상 맨밑(zorder)
    큰 격자 / 세부 격자 (which= 'major' / 'minor' / 'both')
    X축 / Y축 / 동시 (axis = 'x' / 'y' / 'both')

  • 다양한 타입의 grid
    ⊙ 두 Feature의 합이 중요한 경우 x+y=c
    ⊙ 두 Feature간 비율이 중요한 경우 y=cx
    ⊙ 두 Feature의 곱이 중요 xy=c
    ⊙ 특정 데이터를 중심으로 (x-x`)^2 + (y-y`)^2 = c

  • 그 외, 심플한 처리
    선 추가하기
    면 추가하기
    Setting / Theme 바꾸기

댓글