iBetter Books
수정

첫 번째 그래프

민서는 다시 한 번 코드를 봤습니다.

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

"이게 끝이야?"

선배가 고개를 끄덕였습니다. "응, 이게 끝이야."

scatterplot 파라미터 뜯어보기

한 줄짜리 코드지만 세 가지 파라미터가 들어 있습니다.

  • data: 시각화할 DataFrame을 전달합니다. tips DataFrame을 그대로 넘겨주면 됩니다.
  • x: x축에 표시할 컬럼 이름입니다. 문자열로 전달합니다.
  • y: y축에 표시할 컬럼 이름입니다. 문자열로 전달합니다.

Seaborn의 대부분 함수가 이 패턴을 따릅니다. DataFrame과 컬럼 이름을 넘겨주면, 나머지는 Seaborn이 처리합니다.

완전한 예제

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.scatterplot(data=tips, x="total_bill", y="tip")plt.title("Total Bill vs Tip")plt.show()

실행 결과

같은 그래프를 Matplotlib으로만 그리면

Seaborn이 얼마나 코드를 줄여주는지 직접 비교해봅니다.

import pandas as pdimport matplotlib.pyplot as plttips = pd.read_csv("https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv")# Matplotlib만 사용 — 7줄fig, ax = plt.subplots()ax.scatter(tips["total_bill"], tips["tip"])ax.set_xlabel("total_bill")ax.set_ylabel("tip")ax.set_title("Total Bill vs Tip")plt.tight_layout()plt.show()

실행 결과

Matplotlib 코드는 7줄이 필요합니다. 그런데도 점 색상, 투명도, 기본 스타일은 Seaborn이 적용해 주는 수준이 아닙니다. Seaborn은 한 줄로 같은 결과를 내면서, 기본 스타일도 훨씬 깔끔합니다.

선배가 설명했습니다. "Matplotlib은 세밀하게 제어하고 싶을 때 직접 손을 댈 수 있는 도구야. Seaborn은 통계 시각화에서 자주 쓰는 패턴을 미리 함수로 만들어둔 거고. 둘이 경쟁 관계가 아니라, 같이 쓰는 거야."

alpha로 점 투명도 조절

데이터 포인트가 많이 겹칠 때는 투명도를 조절하면 밀도를 시각적으로 확인할 수 있습니다.

import seaborn as snsimport matplotlib.pyplot as plttips = sns.load_dataset("tips")sns.scatterplot(data=tips, x="total_bill", y="tip", alpha=0.5)plt.title("Total Bill vs Tip (alpha=0.5)")plt.show()

실행 결과

alpha 값은 0(완전 투명)에서 1(불투명) 사이입니다. 점이 겹치는 구간에서 색이 진하게 나타나므로, 데이터가 밀집된 영역을 직관적으로 파악할 수 있습니다.