NAVER Boostcamp AI Tech/Level 1

[Week 4 / Data Visualization] 다양한 시각화 방법론

sdbeans 2022. 2. 7. 10:47

Polar Coordinate

Polar Plot

Polar coordinate, 즉 극좌표계를 사용하는 시각화 방법이다. 좌표계 위에 나타낼 수 있는 거리 R 그리고 각도 theta를 사용한다. 각을 표현할 수 있기에 rotation 회전이나 periodicity 주기성과 같은 각도의 특성을 나타내기에 적합하다. projection = polar 를 사용하면 x의 subplot이 polar plot으로 바뀌게 된다. scatter, line, bar plot 모두 극좌표계로 맵핑하여 polar plot으로 만들 수 있다.

Matplotlib logo에 사용된 plot이 polar coordinate에 bar 형식으로 시각화 한 것이다.

Data Converting

데이터를 polar coordinates 극 좌표계에서 일반적으로 쓰이는 rectangular coordinates 직교 좌표계로 변환할 때 삼각함수를 사용해서 쉽게 변환할 수 있다. 거리 r값과 각 $\theta$값을 사용하여 $x$와 $y$값을 계산한다.

$x = r \cos \theta$

$y = r \sin \theta$

 

Rador Plot

Rador Chart

a.k.a. star plot
2차원 그래프에 중심점을 기준으로 3개 이상의 feature들을 동시에 표현할 수 있다. 데이터의 quality를 나타내기 쉬우며 동시에 두 individual을 비교할 때도 적합하다.
e.g. 게임 캐릭터 특기/특징 분석

주의점

  1. 각자의 feature는 independent 해야하고, 그 feature들의 scale도 같아야 한다. ordinal 변수나 numerical 변수가 함께 있다면 numerical의 range를 정해서 ordinal하게 나누는 방식 등으로 같은 방식으로 측정되어야한다.
    e.g. 휴대폰을 비교할 때, 소비자의 평점과 휴대폰 칩의 속도를 비교할 때 데이터를 변환하지 않고 두 feature를 같이 plotting 하는 것은 적합하지 않다.
  2. radar chart에서 각 feature들을 배치하는 순서에 따라 면적이 달라질 수 있다. 따라서 면적은 데이터의 특징을 잘 나타내주지 않는다.
  3. feature의 개수가 늘어날 수록 가독성이 떨어진다. 만약 나타내고 싶은 feature가 많다면, 다른 plot을 사용하는게 더 좋다.

Pie Charts

통계를 낼 때 많이 사용하는 원 모양 차트이다. 전체 원이 100%이며 각 부채꼴은 전체 백분위의 몇 프로인지 나타낸다.
많이 사용하는 차트이지만 사실 사용을 지양한다.
각도의 비율로 나타낸 부채꼴의 크기를 비교하는게 힘들다. 이를 대신해서 bar plot으로도 충분히 길이 비교가 가능하다. Pie chart 하나만 사용하기보단, 다른 차트와 함께 두는 것을 권장한다.

 

응용 1 - Donut Chart

Pie chart와 똑같지만 중간 부분을 비워두어 도넛처럼 생긴 차트다. 원으로 나타내면 조금 답답한 느낌이 들 수 있어 디자인 적으로 도넛 차트가 선호된다. 하지만 데이터 분석에서는 사용하지 않는게 좋고, PPT에 시각적인 도움을 주는 용도로 사용하는게 좋다. plotly에서 쉽게 구현할 수 있다.

 

응용 2 - Sunburst Chart

이름과 같이 햇살을 닮은 차트이다. hierarchical data를 표현할 때 사용하지만, 더 효과적인 treemap을 추천한다. Sunburst chart는 보기엔 화려하지만 plotly로 구현하기는 쉽다.


다양한 시각화 라이브러리 Other Data Visualization Libraries and Methods

Missingno

Missing value를 확인하는 시각화 라이브러리이다. 결측치의 distribution을 확인하고 싶을 때 사용한다. Null 값이 있는 순서대로 정렬하여 distribution을 확인할 수 있다.

pip install missingno
import missingno as msno

Treemap

Hierarchical data를 시각화 할 때 쓰는 대표적인 라이브러리이다. 직사각형을 사용해서 계층의 포함관계를 표현한다. Treemap의 핵심은 사각형을 나누는 타일링 알고리즘인데, 이 알고리즘이 다양하다.
하나의 큰 사각형을 분할해서 label과 함께 나타내는 mosaic plot과 모양은 흡사하지만, mosaic은 계층적인 특징을 반영하지 않는다.
Pychart와 비슷하다.

pip install squarify
# OR use treemap in Plotly library
import squarify

Waffle Chart

와플과 흡사한 모양인 시각화 방법이다. 각각 하나의 정사각형은 discrete한 값 혹은 단위를 나타낸다. Bar plot을 사각형으로 쪼개서 나타낸다고 말 할 수도 있다. 정사각형이 아니라 icon을 사용한다면 pictogram chart로 활용도 가능하기에 매우 유용한 차트다.

pip install pywaffle
from pywaffle import Waffle

Venn

집합이나 통계에서 사용하는 벤 다이어그램이다. 교집합, 여집합, 합집합 등을 나타내기 좋다. EDA에 사용하기 보다는 발표자료 등에 활용할 때가 많다. 다른 프로그램으로 더 쉽게 만들 수 있고, 여러 색이 겹치면 가독성도 떨어지기에 많이 추천하지는 않는다.

pip install pyvenn
pip install matplotlib-venn
from matplotlib-venn import venn2
from matplotlib-venn import venn3