- 과학 논문과 데이터 분석에서 흔히 사용되지만 잘못된 시각화 관행 16가지를 예제와 함께 정리한 GitHub 저장소로, R 코드와 시뮬레이션 데이터를 통해 각 사례를 직접 재현 가능
- 막대 그래프의 평균 비교 오용, 소표본 바이올린 플롯, 단방향 데이터에 양방향 색상 스케일 적용 등 데이터의 분포와 특성을 왜곡하는 시각화를 구체적으로 지적
- 히트맵의 행·열 재정렬 누락, 이상치 미확인, 파이 차트와 동심원 도넛 차트의 근본적 한계 등 인간의 시각 인지 특성을 고려하지 않은 차트 유형의 문제를 설명
- 위치 기반 시각화와 길이 기반 시각화의 혼동, 축 절단 막대 그래프 등 오해를 유발하는 구조적 설계 오류에 대한 경고 포함
- 데이터 시각화를 다루는 모든 연구자와 개발자가 참고할 수 있는 실용적 안티패턴 모음으로, 각 항목에 대안적 시각화 방법도 함께 제시
1. 막대 그래프로 평균 비교를 하지 말 것
- 평균 비교(means separation) 플롯은 과학 논문에서 가장 흔한 시각화 중 하나로, 두 개 이상 그룹의 평균과 분산, 분포를 보여주는 것이 목적
- 예제에서 두 그룹이 유사한 평균과 표준편차를 가지지만 분포는 완전히 다름 — 막대 그래프만으로는 이 차이를 감지 불가
- 막대 그래프를 사용하기 전에 반드시 데이터의 분포를 확인해야 하며, Weissgerber et al.(2015, PLOS Biology)에서도 막대 그래프의 한계를 지적
2. 소표본에서 바이올린 플롯을 사용하지 말 것
- 바이올린 플롯이나 평활 분포 곡선은 표본 크기가 작을 때 의미 없음
- 소표본에서는 동일한 관측값이라도 분포와 사분위수가 크게 변동하며, 사분위수가 안정화되려면 n이 50 이상 필요
- 동일 정규분포에서 여러 번 샘플링하여 사분위수를 비교한 실험 결과로 이를 입증
3. 단방향 데이터에 양방향 색상 스케일을 사용하지 말 것
- 색상 스케일에서 가장 어두운 색과 가장 밝은 색은 최댓값, 최솟값, 평균, 0 등 의미 있는 값을 나타내야 함
- 가장 밝거나 어두운 색이 임의의 숫자를 나타내는 것은 "막대 차트에서 가장 긴 막대가 최댓값이 아닌 것"만큼 심각한 오류
- 히트맵/색상 그라디언트 사용 시 데이터의 방향성(단방향 vs. 양방향)에 맞는 색상 스케일 선택이 필수
4. 막대 그래프 초원(Bar Plot Meadow)을 만들지 말 것
- 다요인 실험 결과를 막대 그래프로 나열하면 "막대 그래프 초원"이 되어 결과 전달에 비효과적
- 다요인 실험 결과를 효과적으로 전달하려면 관심 요인별로 그룹핑/패싯팅을 신중하게 설계해야 함
- 예제에서 Treatment와 Explant이 Response에 미치는 영향을 Variety 수준에서 비교하며, 분석 초점에 따라 레이아웃이 달라져야 함을 강조
5. 히트맵의 행·열 재정렬을 고려하지 않으면 안 됨
- 히트맵은 과학 논문, 특히 오믹스(omics) 논문에서 매우 흔하지만, 행과 열의 순서를 재정렬하지 않으면 유용한 정보를 추출 불가
- 클러스터링을 이용한 재정렬이 일반적이지만 유일한 방법은 아니며, 96웰 플레이트처럼 물리적 배치를 나타내는 경우에는 재정렬 불가
- 행·열 재정렬과 적절한 색상 그라디언트를 결합하면 시각적으로도 아름다운 히트맵 생성 가능
6. 히트맵에서 이상치를 확인하지 않으면 안 됨
- 이상치는 히트맵의 인식과 해석을 완전히 바꿀 수 있으며, 색상으로 수치 데이터를 표현하는 모든 시각화에 적용되는 문제
- 예제에서 20개 특성을 측정한 2개 관측값이 이상치 미확인 시 전반적으로 유사해 보이지만, 색상 스케일을 95번째 백분위수 기준으로 조정하면 모든 특성에서 차이가 드러남
7. 각 요인 수준별 데이터 범위를 확인할 것
- 다요인 실험에서 반응 변수의 범위가 요인 수준에 따라 크게 달라지는 경우가 흔함
- 가상 실험에서 3가지 화합물을 2개 그룹(대조군 vs. 처리군)으로 측정한 결과, 화합물 1의 농도 범위가 다른 화합물보다 훨씬 좁아 처리 효과를 놓칠 위험이 있음
- 각 화합물별 데이터 범위를 사전에 확인하지 않으면 중요한 처리 효과를 간과 가능
8. 네트워크 그래프에서 여러 레이아웃을 시도할 것
- 네트워크 그래프의 외형(토폴로지가 아닌 레이아웃) 은 효과성에 큰 영향을 미침
- 동일한 데이터에서 3가지 네트워크 그래프가 완전히 다르게 보이며, 9가지 서로 다른 레이아웃을 적용한 예시도 포함
- 레이아웃에 따라 네트워크의 해석 난이도가 크게 달라지므로 여러 레이아웃을 시도해야 함
9. 위치 기반 시각화와 길이 기반 시각화를 혼동하지 말 것
- 점·선 그래프에서 값은 x축과 y축의 위치로 표현되고, 막대 그래프에서 값은 x축으로부터의 거리(길이) 로 표현
- 예제에서 0 기반이 아닌 막대 그래프는 시점 2의 막대 길이를 시점 1의 약 3배로 보이게 하지만, 실제 평균 차이는 약 1.6배 — 길이와 위치를 혼동하면 오해를 유발하는 그래프 생성
-
축 절단(Broken Axis) 막대 그래프 주의
- 축 절단은 넓은 범위의 수치를 표현할 때 유용하지만(대안으로 로그 스케일 축 사용 가능), 위치 기반 그래프에서만 적절
- 막대 그래프에서 축 절단 위치를 바꾸면 특정 막대가 더 길거나 짧아 보이는 착시 효과 발생
- 예제에서 막대 "d"의 길이가 축 절단 위치에 따라 매우 다르게 보이며, 이는 막대 그래프가 길이 기반 그래픽이기 때문
10. 파이 차트를 만들지 말 것
- 파이 차트는 비율 데이터를 원형 섹터로 나누어 표현하지만, 인간은 각도와 면적보다 길이를 읽는 능력이 훨씬 우수
- 2개 그룹, 각 4개 하위 범주의 예제에서 파이 차트는 그룹 간 비교가 매우 어려움
- 도넛 차트로 단순화해도 호 길이로 데이터를 표현하게 되므로, 차라리 도넛을 펼쳐서 스택드 바 그래프로 만드는 것이 비교에 훨씬 효과적
- ggplot에서 파이 차트와 도넛 차트의 스크립트는 스택드 바보다 오히려 더 복잡함
11. 동심원 도넛 차트를 만들지 말 것
- 동심원 도넛에서 데이터가 호 길이로 표현된다고 생각하기 쉽지만 실제로는 호 각도로 표현되며, 인간은 호 각도를 읽는 데 취약
- 바깥 링의 호 길이가 안쪽 링보다 훨씬 길어서, Group 2와 Group 3가 동일한 값을 가져도 Group 3의 호 길이가 훨씬 길게 보임
- 그룹 순서(어느 그룹이 어느 링에 배치되는지)가 플롯 인상에 큰 영향을 미쳐 큰 값이 더 짧은 호를 갖는 역설 발생 가능
- circos plot 등 원형 레이아웃에도 동일한 문제가 적용되며, 대안은 단순히 도넛을 펼쳐 스택드 바 플롯으로 변환하는 것
12. 빨강/초록 및 무지개 색상 스케일을 사용하지 말 것
- 적록 색각 이상(Deuteranomaly) 은 남성 1/16, 여성 1/256에서 발생하는 가장 흔한 색맹 유형
- 빨강/초록 및 무지개 색상 스케일은 색맹 사용자에게 문제가 되며, 흑백 인쇄 시에도 정보 보존이 매우 저조
- viridis 같은 "현대적" 색상 스케일은 색맹 친화적이면서 그레이스케일에서도 안전하고, 시각적으로도 우수
13. 스택드 바 플롯의 재정렬을 잊지 말 것
- 스택드 바 플롯은 비율 데이터, 커뮤니티 구조, 집단 구조, 혼합 분석(admixture analysis) 시각화에 흔히 사용
- 100개 샘플과 8개 클래스의 예제에서 막대 순서를 최적화하지 않으면 그래프에서 아무런 패턴도 식별 불가
- 막대를 재정렬한 후에는 패턴이 극적으로 드러나며, 샘플의 그룹핑과 정렬 최적화가 핵심
14. 스택드 바와 평균 비교를 혼합하지 말 것
- 스택드 바 플롯은 100%로 합산되는 비율 데이터를, 평균 비교 플롯은 평균의 차이와 분산을 보여주는 것으로, 두 가지는 전혀 다른 시각화 과제
- 블루베리 식물 실험 예제에서 표준 스택드 바 플롯은 화학 처리가 과일 색상 프로파일을 가장 성숙한 단계(dark blue)로 강하게 이동시킨 것을 명확히 보여줌
- 스택드 바 위에 오차 막대와 점을 오버레이하면 어떤 오차 막대와 점이 비교되는지 불명확해지며, 상단 스택의 오차 막대가 위로 밀려 y축 해석이 직관적이지 않음
- 평균 비교와 분산이 시각화의 주목적이라면 별도의 평균 비교 그래프가 더 적합
15. 소표본에서 히스토그램을 사용하지 말 것
- 히스토그램이 막대 그래프의 대체로 제안되기도 하지만, 빈(bin) 수에 대한 강건성이 소표본에서 매우 낮음
- 동일 정규분포에서 n = 10, 100, 1000으로 샘플링하고 10, 30, 50개 빈으로 히스토그램을 그리면, 같은 분포임에도 히스토그램 형태가 크게 다름
- 소표본(n < 30)에서는 모든 데이터 포인트를 직접 그래프에 표시하는 것이 훨씬 바람직하며, n = 100에서도 빈 수에 따라 히스토그램 외형이 급격히 변화
- 히스토그램이 빈 수 변화에 강건해지려면 표본 크기가 약 1000 이상 필요
16. 이봉 분포(Bimodal) 데이터에 박스플롯을 사용하지 말 것
- 박스플롯은 중앙값과 사분위수에 초점을 맞추므로, 이봉 분포(및 다봉 분포) 데이터를 제대로 표현 불가
- 박스플롯을 만들기 전에 반드시 데이터의 분포를 확인해야 함
- 소~중간 표본 크기(수만 미만)에서는 ggbeeswarm 패키지의
geom_quasirandom()을 사용해 모든 데이터 포인트를 직접 표시하는 것이 최선의 관행 - 바이올린 플롯과 히스토그램 등 분포 기반 그래픽은 소표본에서 강건하지 않음