[Visualization] Visualization 1
Visualization
- 학습 목표 1. 목적에 따라 시각화를 선택하고 사용할 수 있다.
- 학습 목표 2. 시각화 결과를 효과적으로 수용할 수 있다.
데이터 시각화란?
- 데이터 시각화란 데이터를 그래픽 요소로 매핑하여 시각적으로 표현하는 것
- 100점짜리 시각화는 없지만 연구되고 사용된 시각화 모범 사례를 통해 좋은 시각화를 만들 수 있다.
시각화는 다양한 요소가 포함된 Task
- 목적 : 왜 시각화 하는지
- 독자 : 시각화 결과의 대상이 누구인지
- 데이터 : 어떤 데이터를 시각화 할 것인지
- 스토리 : 어떤 흐름으로 인사이트를 전달할 것인지
- 방법 : 전달하고자 하는 내용에 맞게 효과적인 방법을 사용하고 있는지
- 디자인 : UI에서 만족스러운 디자인을 가지고 있는지
데이터 이해하기
- 데이터 시각화를 위해서는 데이터가 우선적으로 필요하다.
- 데이터셋 관점, 개별 데이터의 관점으로 구별한다.
데이터셋의 종류
- 정형 데이터 (엑셀등으로 정리되어 있는 전형적인 데이터, 통계쪽에서 많이사용됨)
- 시계열 데이터 (시간 흐름에다른 추세, 계절성, 주기성등을 살핀다.)
- 지리/지도 데이터 (거리, 경로, 분포등 다양한 실사용)
- 관계 데이터 (객체와 객체 간에 시각화, 휴리스틱하게 많이 분석)
- 계층적 데이터 (관계 중에서도 포함관계가 분명한 데이터, ex)Tree, Treemap)
데이터 분류
- 수치형(numerical)
- 연속형(continuous) : 길이, 무게, 온도 등
- 이산형(discrete) : 주사위 눈금, 사람 수 등
- 범주형(categorical)
- 명목형(nominal) : 혈액형, 종교 등
- 순서형(ordinal) : 학년, 별점, 등급 등
마크와 채널
- 마크 - 점, 선, 면으로 이루어진 데이터 시각화
- 채널 - 각 마크를 변경 할 수 있는 요소들
전주의적 속성(Pre-attentive Attribute)
- 주의를 주지 않아도 인지하게 되는 요소
- 시각적으로 다양한 전주의적 속성이 존재
- 동시에 사용하면 인지하기 어려움
- 적절하게 사용할 때, 시각적 분리(visual pop-out -> 가독성이 좋다.)
Bar plot
Bar plot 이란?
- Bar plot이란 직사각형 막대를 사용하여 데이터의 값을 표현하는 차트/그래프
- 범(category)에 따른 수치 값을 비교하기에 적합한 방법
- 개별 비교, 그룹 비교 모두 적합
- 막대의 방향에 다른 분류 (.bar() / .barh())
- 수직 : x축의 범주, y축의 값을 표기.(default)
- 수평 : y축에 범주, x축에 값을 표기.(범주가 많을 때)
다양한 Bar plot
Multiple Bar plot
- Bar plot에서는 범주의 대해 각 값을 표현 -> 즉 1개의 feature에 대해서만 보여줌
- 여러 Group을 보여주기 위해서는 여러가지 방법이 필요
- 플롯을 여러 개 그리는 방법
- 한 개의 플롯에 동시에 나타내는 방법
- 쌓아서 표현하는 방법 (Stack Bar Plot, 응용하여 Percentage Stacked Bar Chart를 주로사용)
- 겹쳐서 표현하는 방법 (Overlapped Bar Plot)
- 이웃에 배치하여 표현하는 방법 (Grouped Bar Plot 가장 추천!!) - 그룹별 범주에 따른 bar를 이웃되게 배치. - matplotlib 으로는 비교적 구현이 까다로움 - 그룹이 적을때 효과적(5~7개 이하)
Principle of Proportion Ink
The representation of numbers, as physically measured on the surface of the graphic itself, should be directly proportional to the numerical quantities represented.
- 실제값과 그에 표현되는 그래픽으로 표현되는 잉크 양은 비례해야 한다
- 반드시 x축의 시작은 zero(0)!!
- 차이를 나타내고 싶다면 plot의 세로 비율을 늘리기
- 막대 그래프에만 한정된 것은 아니다.
데이터 정렬하기
- 정확한 정보를 전달하기 위해서는 정렬이 필수.
- pandas에서는 sort_values, sort_index()를 사용하여 정렬
- 데이터 종류에 따라 다음 기준으로
- 시계열 - 시간순
- 수치형 - 크기순
- 순서형 - 범주의 순서대로
- 명목형 - 범주의 값 따라 정렬
- 여러 가지 기준으로 정렬을 하여 패턴을 발견함
- 대시보드에서는 Interactive로 제공하는 것이 좋다.
적절한 공간 활용
- 여백과 공간만 조정해도 가독성이 높아짐.
- Matplotlib의 bar plot은 ax에 꽉 차서 살짝 답답함.
- Matplotlib techniques
- X/Y axis Limit (set_xlim(), set_ylime())
- Spines(spines[spine].set_visible())
- Gap(width)
- Legend(legend())
- Margins(margins())
복잡함과 단순함
- 필요없는 복잡함을 없애자
- 무의미한 3D는 사용하지말자
- 최대한 직사각형을 사용하는것을 지향
- 무엇을 보고싶은가(시각화를 보는 대상이 누구인지)
- 축과 디테일의 복잡함을 최대한 단순하게.
ETC
- 오차 막대를 추가하여 uncertainty 정보를 추가
- bar 사이 gap이 0이라면 ->히스토그램
- .hist()를 사용
- 연속된 느낌을 준다.
- 다양한 텍스트 정보 활용
Line plot
기본 Line Plot
Line Plot 이란?
- Line Plot은 연속적으로 변화하는 값을 순서대로 점으로 나타내고, 이를 선으로 연결한 그래프
- 꺽은선 그래프, 선 그래프, line chart, line graph등의 이름으로 사용된다.
- 시간/순서에 대한 변화에 유리하며 시계열 분석에 특화되어 있다.
- 놀라운점은 .line이 아니라 .plot() 이다.
Line plot의 요소
- 5개 이하의 선을 사용하는 것을 추천(가독성을 위해)
- 요소들
- 색상(color)
- 마커(maker, markersize)마커의종류
- 선의 종류(linestyle, linewidth)
Line plot 전처리
- 실시간 데이터는 noise로 패턴 및 추세 파악이 어려울 수 도 있음.
- Noise의 인지적인 방해를 줄이기 위해 smoothing을 사용
정확한 Line plot
추세에 집중
- Bar plot과 다르게 꼭 축을 0에 초점을 둘 필요는 없다.(잉크 비례의 법칙에서 벗어남)
- 구체적인 line plot 보다는 생략된 line plot이 나을 수 있다.
- grid, annotate 등 제거해 트렌드에 집중
간격
- 규칙적인 간격이 아니라면 오해를 줄 수 있다.
- 규칙적인 간격의 데이터가 아니라면 각 관측값에 점으로 표시하여 오해를 줄여야 함.
보간
- line은 점을 이어 만드는 요소 -> 점과 점 사이에 데이터가 없기에 이를 잇는 방법(보간)
- 데이터의 error나 noise가 포함되어 있는 경우, 데이터의 이해를 돕는 방법
- Presentation에는 좋은 방법이지만
- 없는데이터를 있다고 생각 할 수 있음.
- 일반적인 분석에서는 지양할 것!
- 정보
이중 축 사용
- 좌측, 우측에 두개의 축을 사용한다.
- 같은 시간축에 다른 종류 데이터를 표현할 떼 -> twinx()를 사용한다.
- 한 데이터에 대한 다른 단위 표현할 때 -> secondary_xaxis(), secondary_yaxis() 사용한다. secondary_axis
- 함부러 사용하는 것은 지양한다. (두개를 따로 사용하는 것이 가독성이 높다)
ETC
- 라인 끝 단에 레이블을 추가한다. (범례 보다 식별에 도움됨)
- 연한 색을 사용해 uncertainty 표현 가능(신뢰구간, 분산 등)
Scatter plot
기본 Scatter Plot
Scatter plot이란
- 점을 사용하여 두 feature간의 관계를 알기 위해 사용하는 그래프
- 산점도 등으로 불리고, scatter()를 사용
Scatter plot의 요소
- 요소
- 색
- 모양
- 크기
- 요소등을 활용하여 2차원 데이터에서 N차원 데이터로 확장 가능(ex 빨간색은 3차원으로, 네모는 4차원으로)
Scatter plot의 목적
- 상관 관계 확인(양의 상관관계, 음의 상관관계, 없음)
- 군집, 값 사이의 차이, 이상치 탐지등
정확한 Scatter plot
Overplotting
- 점이 많아질수록 점의 분포를 파악하기 힘들다!
- 해결방안 네가지
- 투명도 조정
- 지터링(jittering) : 점의 위치를 약간씩 변경
- 2차워 히스토그램 : 히트맵을 사용해 깔끔하게 시각화
- Contour plot : 분포를 등고선을 사용하여 표현
점의 요소와 인지
- 색 - 연속은 gradient, 이산은 개별 색상으로
- 마커 - 거의 구별하기 힘들다 + 크기가 고르지 않음
- 크기
- 흔히 버블 차트라고 부름
- 구별하기 쉽지만 오용하기 쉬움
- 관계보다는 각 점간 비율에 초점을 둔다면 좋음
- SWOT 분석 등에 활용 가
인과관계와 상관관계
- 인과 관계(causal relation)과 상관 관계(correlation)은 다름!
- 1주차에서 강의에서 배웠던것 기억
추세선 (curve fitting)
- 추세선을 사용하여 scatter의 패턴을 유추할 수 있음
ETC
- Grid는 지양, 최소화, 색은 무채색으로
Comments