첫 번째 그래프
민서는 다시 한 번 코드를 봤습니다.
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(불투명) 사이입니다. 점이 겹치는 구간에서 색이 진하게 나타나므로, 데이터가 밀집된 영역을 직관적으로 파악할 수 있습니다.