시각화 이론 시리즈의 마지막 노트로, 세 덩어리를 묶습니다. (1) 변수가 3개 이상일 때의 표현 전략(추가 채널, small multiples, 히트맵), (2) 오해를 부르는 시각화의 전형적 기법, (3) 과밀 데이터 대응과 도구 지형, 그리고 (4) 데이터-잉크 비율과 스토리텔링 원칙입니다.
추상화 계층 구분선
인지·지각 이론: 사람이 동시에 정확히 읽는 채널 수는 적다(03 노트). small multiples가 3D보다 나은 근거.
차트 설계 원칙: 이 노트. "채널을 늘리기 전에 facet을 고려", "잘린 축은 왜곡".
도구 구현: sns.FacetGrid, hexbin, plotly/altair 등은 도구 노트에 위임.
1. 다변량 표현
1.1 채널 추가
기본 x·y 외에 변수를 더 실을 수 있는 시각 채널: 색(hue), 크기(size), 모양(marker), facet. 다만 03 노트의 정확도 순위에 따라 추가 채널은 정밀도가 낮습니다. 일반적 권장 순서:
가장 중요한 두 변수 → x, y(위치)
세 번째가 범주(≤7) → 색
네 번째가 수치이고 대략적 크기만 필요 → 크기(면적 인코딩이라 부정확함을 감안)
그 이상 → facet으로 쪼갠다
1.2 small multiples (facet)
한 변수의 값마다 동일한 축·스케일의 작은 그림을 격자로 반복하는 방식입니다. Tufte가 강조한 기법으로, 장점은:
각 패널 내부는 여전히 위치 인코딩(정확)
패널 간 비교는 "같은 자리 다른 패널"이라 눈이 쉽게 추적
3D 회전이나 색 10종보다 인지 부하가 낮음
패널 간 축 스케일을 공유하는 것이 핵심입니다. 패널마다 축이 다르면 비교가 무의미해집니다.
1.3 상관 히트맵과 페어플롯
상관 히트맵: 변수 쌍의 상관계수를 색 타일로. 발산형 팔레트 + 중앙 0 고정(04 노트). 색은 부정확하므로 "전반적 구조 파악"용이며, 중요한 쌍은 산점도로 확인합니다.
페어플롯(scatter matrix): 모든 수치 변수 쌍의 산점도 격자. 탐색 단계 표준 도구지만 변수가 많으면(>10) 폭발하므로 선별이 필요합니다.
집계 후 시각화: 대용량은 원자료를 그대로 던지지 말고 그룹 집계(평균·분위수·개수) 후 그림. 렌더링 비용과 인지 부하를 동시에 낮춤.
4. 도구 지형
도구
성격
강점
matplotlib
저수준·명령형
완전한 제어, 세밀한 커스터마이징, 출판용 도판
seaborn
matplotlib 위 고수준 통계 API
분포·범주·관계 함수, 팔레트, facet을 짧게
pandas .plot
DataFrame 메서드
탐색 중 즉석 확인
plotly
선언적·인터랙티브
호버·줌, 대시보드, 웹 임베드
altair
Vega-Lite 기반 선언적
그래프 문법 충실, 상호작용 명세가 간결
일반적 분업: 탐색은 seaborn/pandas, 정적 출판물은 matplotlib(필요 시 seaborn으로 초안 후 matplotlib으로 마감), 인터랙티브·공유 대시보드는 plotly/altair. 구체적 API는 도구 노트(Python - matplotlib MOC, Python - seaborn MOC)로 위임합니다.
5. 데이터-잉크 비율과 스토리텔링
데이터-잉크 비율(Tufte): 전체 잉크 중 데이터를 직접 나타내는 잉크의 비율. 이를 높이자는 것은 곧 불필요한 격자선·테두리·배경·3D 효과·중복 라벨(chartjunk)을 지우자는 뜻입니다. 이는 디자인 권고이며, 최소주의를 극단적으로 밀면 오히려 읽기 어려워질 수 있어 균형이 필요하다는 반론도 있습니다.
제목이 결론을 말하게: "월별 매출"이 아니라 "3분기 매출이 전년 대비 18% 감소"처럼. 독자가 그림에서 스스로 결론을 재구성하지 않아도 되게 합니다(설명적 시각화 -01 노트).
주석으로 핵심 지점 강조: 전주의적 속성(진한 색, 화살표, 라벨)을 결정적 데이터 포인트 하나에만(03 노트).
댓글
GitHub 계정으로 의견이나 질문을 남길 수 있습니다.