iBetter Books
수정

hue, style, size로 차원 추가

"x축이 total_bill, y축이 tip인데, 요일 정보도 같이 보고 싶어요."

민서가 말했습니다. 선배는 잠시 생각하다가 파라미터 하나를 추가했습니다.

sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day")

점들이 색깔별로 나뉘었습니다. 요일마다 다른 색입니다.

"색으로 하나 더 표현할 수 있어요?"

"스타일이랑 크기도 돼."

hue: 색상으로 범주 구분

hue 파라미터는 범주형 컬럼을 색상으로 구분합니다. Seaborn이 색상 팔레트를 자동으로 선택하고, 범례를 생성합니다.

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.scatterplot(data=tips, x="total_bill", y="tip", hue="day")plt.title("요일별 계산서 금액과 팁")plt.show()

실행 결과

범주형 컬럼 외에도 수치형 컬럼을 hue에 지정할 수 있습니다. 수치형의 경우 연속적인 색상 그라데이션이 적용됩니다.

style: 마커 모양으로 구분

style 파라미터는 데이터 포인트의 마커 모양을 변경합니다. 색맹인 독자를 위한 접근성 측면에서도 hue와 함께 쓰면 좋습니다.

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")# hue와 style을 같은 컬럼에 적용sns.scatterplot(data=tips, x="total_bill", y="tip", hue="time", style="time")plt.title("시간대별 계산서 금액과 팁")plt.show()

실행 결과

같은 컬럼을 hue와 style에 동시에 지정하면, 색상과 마커 모양이 모두 달라집니다. 컬러 프린트나 흑백 출력에서도 구분이 가능해집니다.

size: 점 크기로 수치 표현

size 파라미터는 점의 크기를 변경합니다. 수치형 컬럼을 지정하면 값이 클수록 점이 커집니다.

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")# size에 수치형 컬럼 지정sns.scatterplot(data=tips, x="total_bill", y="tip", size="size")plt.title("일행 수에 따른 계산서 금액과 팁")plt.show()

실행 결과

tips 데이터셋에서 size 컬럼은 식당을 방문한 일행 수입니다. 일행이 많을수록 점이 크게 표시됩니다.

세 파라미터를 동시에 사용: 4차원 표현

x축, y축, hue, style, size를 모두 사용하면 2D 차트에 최대 5개의 차원을 담을 수 있습니다. 이 중 세 개(hue, style, size)를 동시에 쓰는 예제입니다.

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.scatterplot(    data=tips,    x="total_bill",    # 1차원: x축 (수치)    y="tip",           # 2차원: y축 (수치)    hue="day",         # 3차원: 색상 (범주)    style="time",      # 4차원: 마커 모양 (범주)    size="size",       # 5차원: 점 크기 (수치)    alpha=0.7)plt.title("5가지 변수를 한 차트에")plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left")plt.tight_layout()plt.show()

실행 결과

민서가 화면을 보고 멈췄습니다.

"데이터에 차원을 더할 수 있다니. x, y 말고 색이랑 모양이랑 크기까지 데이터를 담는 거잖아요."

선배가 고개를 끄덕였습니다. "맞아. 근데 너무 많이 쓰면 오히려 읽기 힘들어져. 차원을 추가할 때마다 '이게 정말 필요한 정보인가' 먼저 물어봐야 해."

실용적인 사용 가이드

상황 권장 조합
범주 하나 구분 hue
색맹 독자 고려 hue + style (같은 컬럼)
수치 차원 추가 hue + size
복잡한 비교 hue + style (서로 다른 컬럼)
5차원 표현 hue + style + size (차트가 복잡해질 수 있음)

차원이 많아질수록 범례도 길어집니다. bbox_to_anchor로 범례를 그래프 바깥으로 빼거나, plt.tight_layout()으로 여백을 자동 조정하는 것이 좋습니다.

sizes로 크기 범위 지정

size 파라미터에 수치형 컬럼을 쓸 때, 기본 크기 범위가 너무 좁거나 넓으면 sizes 파라미터로 최솟값과 최댓값을 직접 지정할 수 있습니다.

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.scatterplot(    data=tips,    x="total_bill",    y="tip",    hue="day",    size="size",    sizes=(30, 200))plt.title("크기 범위를 30~200으로 지정")plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left")plt.tight_layout()plt.show()

실행 결과

sizes=(30, 200)은 가장 작은 값이 마커 크기 30, 가장 큰 값이 200으로 스케일됨을 의미합니다.