본문으로 건너뛰기
실습하기

다중 플롯 그리드(FacetGrid, lmplot)

Seaborn은 범주를 기준으로 여러 개의 서브플롯을 생성해 그룹 간 패턴을 쉽게 비교할 수 있습니다.

이때 자주 사용하는 도구가 FacetGridlmplot입니다.


FacetGrid: 범주별 서브플롯 생성

FacetGrid는 범주형 변수의 고유값을 기준으로 서브플롯을 격자 형태로 배치합니다.

주요 매개변수는 다음과 같습니다.

  • rows: 플롯을 세로로 나누는 변수
  • cols: 플롯을 가로로 나누는 변수
  • hue (선택): 데이터 포인트에 색상을 적용할 변수

복잡한 데이터셋을 더 작고 명확한 뷰로 나누어 볼 수 있습니다.

산점도로 보는 FacetGrid
import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")

g = sns.FacetGrid(tips, row="sex", col="time", hue="smoker", margin_titles=True)
g.map_dataframe(sns.scatterplot, x="total_bill", y="tip")
g.add_legend()
plt.show()

아래는 히스토그램으로 보는 FacetGrid의 예제입니다.

히스토그램으로 보는 FacetGrid
g = sns.FacetGrid(tips, col="day")
g.map_dataframe(sns.histplot, x="total_bill", bins=20)
plt.show()

lmplot: 회귀선과 패싯 결합

lmplot은 회귀 플롯과 FacetGrid 기능을 결합한 도구입니다.

변수 간 관계를 회귀선과 함께 시각화하고, 범주별 패턴을 한눈에 비교할 수 있습니다.

카테고리와 패싯이 있는 lmplot
sns.lmplot(
data=tips,
x="total_bill",
y="tip",
hue="sex",
col="time",
height=4,
scatter_kws={"alpha": 0.6}
)
plt.show()

FacetGrid vs lmplot

FacetGrid와 lmplot의 차이점은 다음과 같습니다.

  • FacetGrid: 다양한 플롯 함수(산점도, 히스토그램, KDE, 막대 등)를 자유롭게 매핑해야 할 때
  • lmplot: 회귀선 시각화와 패싯을 한 번에 적용하고 싶을 때

다중 플롯 그리드 활용 팁

  • 패싯 수 제한: 범주가 너무 많으면 그리드가 복잡해짐
  • 축 범위 일관성 유지: sharexsharey로 비교 용이성 확보
  • 범례와 제목 추가: 가독성을 위해 add_legend()margin_titles=True 활용

이제 화면 오른쪽의 노트북에서 단계별로 실습하며 다중 플롯 그리드를 익혀 보세요.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!