값 하나짜리 축 위에 점을 그대로 펼쳐놓는 비스웜 플롯은, 히스토그램이 뭉개는 개별 값과 산점도가 놓치는 분포 모양을 동시에 보여준다. 플로리시 블로그가 정리한 가이드 내용이다.
주가 변동률로 기업들을 늘어놓은 산점도에서, 점들이 한쪽에 몰려 겹치면 어떤 점이 어느 회사인지 구분이 안 된다. 플로리시(Flourish) 블로그가 정리한 가이드는 이 문제를 비스웜 플롯(beeswarm plot)으로 풀어낸다 — 값을 숫자 축 하나 위에 놓되, 겹치는 점만 양옆으로 밀어내는 방식이다.
어떻게 그려지나
값은 하나의 숫자 축 위에 자리를 잡는다. 겹칠 자리에 놓인 점들은 서로 부딪히지 않게 좌우로 밀려나고, 값이 몰린 구간일수록 점들이 옆으로 넓게 퍼지면서 눈에 익은 '벌떼(swarm)' 모양이 나타난다.
히스토그램·산점도와 뭘 다르게 보여주나
히스토그램은 값을 구간(bin)으로 묶어 전체 모양은 잘 보여주지만, 그 구간 안의 개별 값은 사라진다. 비스웜은 같은 퍼짐을 다르게 보여준다 — 낱개 값이 전부 그대로 남아 있어서, 특이값을 찾거나 정확한 수치를 확인하거나 색·라벨·팝업으로 정보를 더 얹을 수 있다. 산점도와는 점을 쓴다는 것만 같다. 두 변수의 관계를 볼 때는 산점도가 낫다 — 기업 규모와 주가 변동률의 관계를 보려면 X·Y축에 각각 변수를 놓아야 한다. 하지만 궁금한 게 '어느 회사가 가장 많이 변했나' 하나뿐이라면, 산점도는 점들이 뭉쳐 회사를 구분하기 어려워진다. 같은 데이터를 비스웜으로 바꾸면 모든 점이 다시 드러나면서, 기술주와 비기술주의 분포 차이도 한눈에 들어온다.
언제, 어떤 데이터에 쓰나
가이드는 부서별 급여, 학교별 시험 성적, 팀별 성과, 제품군별 가격처럼 개별 값과 전체 분포가 동시에 궁금할 때를 비스웜의 쓰임으로 꼽는다. 데이터는 연속형일수록 스웜이 매끄럽게 퍼진다. 급여를 1만 달러 단위로 반올림하면 같은 값을 가진 점들이 줄지어 쌓이지만, 더 정밀한 수치를 쓰면 자연스럽게 흩어진다. 값이 한 구간에 몰려 있으면 점들이 한 덩어리로 겹쳐 작아지고 읽기 어려워지므로, 데이터가 얼마나 몰려 있는지도 미리 살펴야 한다. 플로리시 비스웜은 데이터 포인트 1,000개 안쪽에서 가장 잘 작동한다.
색과 배치로 실험하기
비스웜은 세로로 세울 수도 있고, 색과 크기를 함께 실험할 수도 있다. 호수 수심 예시에서는 깊이가 점의 위치와 색을 동시에 정한다. 보통 한 변수로 두 시각 속성을 겹쳐 쓰는 건 불필요하지만, 이 경우엔 순차 색상 스케일이 물속으로 내려가는 느낌을 더한다. 카테고리별 비교가 필요하면 한 축에는 범주형 변수를, 다른 축에는 수치형 변수를 놓아 그룹마다 자기 스웜을 갖게 할 수도 있다.