Programming

Seaborn 차트 유형 완전 정리 | Histogram, Violin, Bar, Scatter, Line Plot 한 번에 이해하기

Lucas.Kim 2026. 2. 15. 14:23
반응형

📌 개요

데이터 시각화는 단순히 그래프를 그리는 것이 아니라,
데이터의 차원과 변수 유형에 맞는 차트를 선택하는 과정입니다.

이번 글에서는 다음을 정리합니다.

  • 주요 차트 유형과 변수 차원 이해
  • 각 차트가 적합한 데이터 구조
  • Seaborn의 Axes-level / Figure-level 구조 차이
  • Titanic 데이터로 히스토그램 실습

1️⃣ 차트 유형과 데이터 차원


✔ 1. 히스토그램 (Histogram)

연속형 값의 도수 분포를 시각화합니다.

  • X축: 연속형 값의 구간(bin)
  • Y축: 해당 구간의 빈도수

📌 예시
나이, 요금, 점수, 가격 등 분포 확인

👉 데이터의 분포 모양, 왜도, 이상치 여부를 파악할 수 있습니다.


✔ 2. 바이올린 플롯 (Violin Plot)

특정 범주별 연속형 값의 분포를 시각화합니다.

  • 분포 + 밀도 + 중앙값 정보를 동시에 표현
  • 박스플롯보다 분포 형태를 더 직관적으로 보여줍니다.

📌 예시
성별별 나이 분포
클래스별 시험 점수 분포

👉 범주형 X + 연속형 Y 구조에서 매우 유용합니다.


✔ 3. 바플롯 (Bar Plot)

이산형 X와 연속형 Y의 관계를 보여줍니다.

  • X축: 범주형 변수
  • Y축: 평균값(기본), 중앙값 등 집계값

📌 예시
성별 평균 나이
학년별 평균 점수

👉 Seaborn의 barplot은 기본적으로 평균값을 계산하여 표시합니다.


✔ 4. 스캐터플롯 (Scatter Plot)

연속형 변수 2개 사이의 관계를 시각화합니다.

  • X축: 연속형
  • Y축: 연속형

📌 예시
나이 vs 요금
공부시간 vs 점수

👉 변수 간 상관관계, 패턴, 이상치를 확인하기 좋습니다.


✔ 5. 라인플롯 (Line Plot)

시계열 데이터에 가장 적합합니다.

  • X축: 시간(년/월/일)
  • Y축: 연속형 값

📌 예시
월별 매출
연도별 인구 변화

👉 추세(trend)를 파악하는 데 매우 강력합니다.


2️⃣ Seaborn이란?

Seaborn은 Matplotlib 기반의 High-Level 시각화 라이브러리입니다.

특징

  • Matplotlib보다 코드가 간결합니다.
  • Default 설정만으로도 시각적으로 수려합니다.
  • Pandas DataFrame과 쉽게 연동됩니다.
  • 통계 기반 시각화에 특화되어 있습니다.

3️⃣ Seaborn의 두 가지 구조


✔ Axes-level 함수

  • 기존 Matplotlib처럼 개별 Axes에 직접 그림
  • 예: sns.histplot(), sns.scatterplot()

👉 Axes 객체 중심 구조


✔ Figure-level 함수

  • 내부적으로 FacetGrid를 사용
  • 여러 개 subplot 자동 생성 가능
  • 예: sns.displot(), sns.catplot()

👉 Figure 단위로 관리


4️⃣ Titanic 데이터로 Histogram 실습


✔ 데이터 로드

import pandas as pd

titanic_df = pd.read_csv('./titanic/titanic_train.csv')
titanic_df.head(5)


✔ Figure-level 히스토그램 (displot)

import seaborn as sns

sns.displot(titanic_df['Age'],bins=10, rug=True, kde=True)

옵션 설명

  • bins=10 → 구간 개수
  • rug=True → 데이터 위치를 선으로 표시
  • kde=True → 밀도 곡선 추가

✔ 또 다른 방식

sns.displot(x='Age', data=titanic_df)

👉 Pandas 컬럼명 기반 접근


✔ Axes-level 히스토그램

plt.figure(figsize=(12,6))
sns.histplot(x='Age',data=titanic_df, kde=True,bins=30)

특징

  • plt.figure()로 Figure 크기 직접 제어
  • sns.histplot()은 Axes-level 함수

✔ Figure-level 상세 설정

import seaborn as sns
sns.displot(titanic_df['Age'],
            kde=True,
            rug=True, #rug플롯
            height=4,
            aspect=2)

옵션 설명

  • height → 높이
  • aspect → 가로/세로 비율

📌 Axes-level vs Figure-level 비교

구분 Axes-level Figure-level
함수 예 histplot displot
관리 단위 Axes Figure
subplot 확장성 낮음 높음
내부 구조 Matplotlib FacetGrid

 

 

데이터 시각화에서 중요한 것은

  1. 변수 유형 파악 (연속형/이산형)
  2. 차원 구조 이해 (1차원/2차원/범주+연속)
  3. 적절한 차트 선택
  4. Axes-level과 Figure-level 구분

Seaborn은 통계적 시각화에 최적화된 라이브러리이며,
Matplotlib을 기반으로 하지만 훨씬 직관적이고 생산성이 높습니다.

반응형