시각화
Matplotlib, Seaborn, Plotly를 활용한 데이터 시각화 레시피 모음입니다. 기본 차트부터 인터랙티브 대시보드까지 다양한 시각화 기법을 학습합니다.
라이브러리 비교
| 라이브러리 | 특징 | 사용 시점 |
|---|---|---|
| Matplotlib | 기본, 세밀한 커스터마이징 | 논문, 보고서용 정적 차트 |
| Seaborn | 통계 시각화 특화, 예쁜 기본 스타일 | EDA, 분포/상관관계 분석 |
| Plotly | 인터랙티브, 웹 기반 | 대시보드, 프레젠테이션 |
| Altair | 선언적 문법, 간결함 | 빠른 탐색적 분석 |
커리큘럼
1. 기본 차트
초급막대 그래프, 라인 차트, 산점도 등 기본적인 차트를 학습합니다.
- 막대 그래프 (Bar Chart)
- 라인 차트 (Line Chart)
- 산점도 (Scatter Plot)
- 파이 차트 (Pie Chart)
- 히스토그램 (Histogram)
2. 히트맵
중급상관관계, 시간대별 패턴 등을 히트맵으로 시각화하는 방법을 학습합니다.
- 상관관계 히트맵
- 시간 × 요일 히트맵 (활동 패턴)
- 피벗 테이블 기반 히트맵
- 클러스터맵 (Clustermap)
3. 트리맵
중급계층적 데이터를 면적으로 표현하는 트리맵을 학습합니다.
- 카테고리별 매출 비중
- 계층적 구조 표현 (부서 > 팀 > 제품)
- 색상으로 성과 표현 (성장률 등)
- Plotly와 Squarify 활용
4. Sankey 다이어그램
중급고급흐름(flow)을 시각화하는 Sankey 다이어그램을 학습합니다.
- 마케팅 퍼널 시각화
- 채널별 전환 흐름
- 고객 여정 분석
- 노드와 링크 구성
5. 지리 시각화
중급고급지도 기반 데이터 시각화 방법을 학습합니다.
- Folium으로 인터랙티브 지도
- Choropleth (단계구분도)
- 마커와 팝업
- 위치 기반 클러스터링
6. 애니메이션 차트
고급시간에 따른 변화를 애니메이션으로 표현하는 방법을 학습합니다.
- Matplotlib Animation
- Plotly Express 애니메이션
- 시간에 따른 순위 변화 (Racing Bar Chart)
- GIF/MP4 내보내기
7. 인터랙티브 대시보드
고급Plotly와 Streamlit을 활용한 인터랙티브 대시보드 구축을 학습합니다.
- Plotly Dash 기초
- Streamlit 대시보드
- 필터와 콜백
- 실시간 데이터 연동
차트 선택 가이드
ℹ️
어떤 차트를 선택해야 할까?
비교할 때:
- 카테고리 비교 → 막대 그래프
- 시간에 따른 변화 → 라인 차트
- 순위 비교 → 수평 막대 그래프
분포를 볼 때:
- 단일 변수 분포 → 히스토그램, 박스플롯
- 두 변수 관계 → 산점도
- 상관관계 행렬 → 히트맵
구성을 볼 때:
- 전체 대비 비중 → 파이 차트, 트리맵
- 부분의 합 → 누적 막대 그래프
- 흐름/전환 → Sankey 다이어그램
지리를 볼 때:
- 지역별 값 → Choropleth
- 위치 표시 → 마커 지도
- 밀도 → 히트맵 지도
기본 설정 코드
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import plotly.graph_objects as go
# Matplotlib 한글 폰트 설정
plt.rcParams['font.family'] = 'AppleGothic' # macOS
# plt.rcParams['font.family'] = 'Malgun Gothic' # Windows
# plt.rcParams['font.family'] = 'NanumGothic' # Linux
plt.rcParams['axes.unicode_minus'] = False
# 기본 스타일 설정
plt.style.use('seaborn-v0_8-whitegrid')
sns.set_palette('husl')
plt.rcParams['figure.figsize'] = (12, 6)
# Plotly 기본 템플릿
import plotly.io as pio
pio.templates.default = 'plotly_white'색상 팔레트 추천
| 용도 | 팔레트 | 코드 |
|---|---|---|
| 범주형 | tab10 | sns.color_palette('tab10') |
| 순차형 | Blues | sns.color_palette('Blues') |
| 발산형 | RdYlGn | sns.color_palette('RdYlGn') |
| 강조 | Set2 | sns.color_palette('Set2') |
Last updated on