데이터 시각화란? 일반적으로 데이터를 미적으로 표현하는 방법을 말한다.
데이터 시각화를 하면 눈에 띄지 않던 부분이 더 눈에 띌 수 있고, 설명이나 설득할때 정보 전달력이 증가한다.
물론 너무 남발하면 전달력이 줄어든다...
사실 정보를 가장 많이 담고 있는 것은 글 혹은 Text 이다.
책을 기준으로 보면 많은 내용을 담고 있는 것은 글이라는 것을 알 수 있다.
하지만 글로만 된 책을 보면 지루하고, 내용에 대한 집중이 안된다.
이때 시각화된 그래프 혹은 차트, 그림이 있다면 시각적 전환으로 인해 집중이 된다.
또한 시각화와 글을 같이 보면 인지 및 지각능력을 확 깨워, 효율적으로 글을 이해하기 쉬워진다.
데이터 시각화의 핵심은 크게 두가지라고 할 수 있다.
1. Expressiveness: 데이터가 가진 정보를 시각적 요소로 모두 표현
2. Effectiveness: 중요한 정보(데이터)는 부각되어야 한다.
이 두가지를 모두 고려해서 시각화를 하는 것이 핵심이다.
이것을 Visual Encoding이라고 한다.
시각화의 핵심을 잘 지킬 수 있는 방법은 데이터간 특성에 차별성을 두어 표현 하는 것이 일반적이다.
그 방법으로는 다양한데, 두가지만 설명 하겠다.
1. Mark - point/line/area
2. Channel - Mark를 디자인적으로 변경할 수 있는 요소
우리가 matplotlib을 사용하게 되면 plt.scatter를 많이 사용한다.
plt.scatter는 line으로도 scatter로도 또는 다른 것으로도 그릴 수 있다.
이때 표현하는 방식(Marking)을 변경할 수 있는 것이 Mark이다.
으로 표현 가능하며, 필요에 따라 적절한 mark를 선정하는 것이 중요하다.
Channel은 Mark를 조금 더 디자인적, 미적 요소로 부각되게 표현하도록 도와주는 요소이다.
Channel또한 다양한 방법이 존재한다.
위와 같은 다양한 요소를 변경함으로써 시각화에서 더욱 부각되는 요소를 만들 수 있다.
시각화를 효율적으로 하기 위해서 지켜야 하는 원칙들이 있다.
1. Accuracy: 시각화의 정확도
2. Discriminablitiy: 시각화시 각각 구별 가능한지
3. Separability: 시각화 분리성
4. Popout: 시각적인 대비
5. Grouping: 시각화시 각각 그룹에 대한 그룹화
여기서 Popout이라는 개념이 등장하는데
Popout은 전주의적 속성을 갖고 있어야한다.
전주의적 속성(PreAttentive Attribute): 주의하지 않더라도 인지하게 되는 요소
단 이 전주의적 속성을 동시에 사용하게 만들면, 오히려 볼때 난잡하고 어려울 수 있으므로 잘 고려해서 사용해야한다.
시각화의 종류에는 많은 것들이 있다.
대표적으로 알려진 Bar/Line/Scatter/etc.. 이것 외에도 많은 시각화 종류가 있는데, 이번에 저 3가지(Bar/Line/Scatter)의 특성에 대해 알아보겠다.
막대그래프는 범주에 따른 수치값을 비교하기에 적합한 그래프이다.
여기서 범주란 개별 혹은 그룹을 의미하며, 두가지 모두 비교하기에 효과적이다.
막대그래프 종류도 다양 한 것이 있지만, 3가지를 소개한다.
위로 쌓이는 Stack형 막대그래프이다.
대부분 Count된 수치형으로 그리지만, Percent로 표현할때는
Percentage Bar Plot을 이용하면 된다.
겹쳐지는 형태의 막대그래프이다. 일반적으로 두개의 그룹비교에만 사용하고 그이상에는 잘 사용하지 않는다.
이유로는 겹쳐진 형태의 막대그래프 이기때문에, 비교하기 힘들고 시각적으로 구분하기 어렵기 때문이다.
또한 시각적 구분을 위해 alpha(투명도)를 조절해야만 한다.
많이 보이는 형태의 막대그래프로, 그룹끼리 이웃되게 그리는 Bar Plot이다.
범주에따라 그룹을 구분하기 편하므로 많이 사용되는 그래프이다.
단 Matplotlib을 사용할때는 구현이 까다로우므로, 다른 Libary를 이용하는 것을 추천한다.
막대 그래프를 그릴때는 주의사항이 있는데
1. 실제 양(Size)와 그래픽 크기(Size)는 동일해야한다.
2. 반드시 X축 시작은 0으로 한다.
3. 데이터는 정렬해서 그려야한다.
4. 불필요한 복잡성은 배제해야한다.
5. 시각화 보는 Target을 선정해서, 목적에 맞도록 Barplot을 그려야한다.
위의 주의사항을 지켜야 더 효율적으로 막대그래프를 해석 할 수 있다.
선 그래프는 일반적으로 시계열 데이터를 표현할때 사용한다.
하지만 시계열 데이터는 Noise를 포함할때가 많은데, 이경우 Smoothing을 활용하면 부드럽게 표현 가능하다.
1. Barplot과 다르게 축을 0에서 시작할 필요가 없다.
2. 너무 구체적인 시각화보다 조금 생략된(Smoothing) 시각화가 나을 수 있다.
3. 자세한 데이터는 표를 같이 동봉해주면 좋다.
4. 데이터가 너무 생략되지 않는 선에서 범위(limit)을 조절한다.
5. 선의 연결성을 주의해야 한다.
(**보간**으로 인해 데이터가 없음에도 각 점끼리 연결되어 데이터가 있는 것처럼 보일 수 있다.)
산점도는 두 Feature간의 인과관계를 알기 쉽게 만드는 시각화이다.
인과관계 != 상관관계
산점도를 효율적으로 표현하기 위한 방법으로는
1. 투명도 조정
2. 지터링: 점위치 변경
3. 2D-Hist: Heatmap Style로 점을 2D-Hist로 표현
4. Contour Plot: 등고선 느낌으로 산점도로 표현
5. 색상 변경: 연속형 = Gradient / 이산형 = Each Color
--- 이하는 잘 사용하지 않는 방법 ---
6. Marker 변경
7. Bubble Chart
위와같은 방법을 통해 산점도를 조금 더 효율적으로 표현 할 수 있다.
산점도 표현시, Grid는 사용을 지양한다.