Data Analysis

서브 플롯 subplot : 여러 개의 그래프를 하나의 창에 정리해서 보여줌

김심슨 2025. 5. 27. 18:46

목표 : 4개의 그래프를 2행 2열로 한 화면에 그리기 

1. 제조사별 도시 연비 (boxplot)

2. 배기량 vs 고속도로 연비 (scatterplot)

3. 제조사별 평균 고속도로 연비 (barplot)

4. 연도별 평균 도시 연비(lineplot)

 

0. 전체 코드 구조 

import matplotlib.pyplot as plt 
import seaborn as sns
import pandas as pd 

# 데이터 로딩 
df = pd.read_csv('assets/mpg.csv')

# 그래프 스타일 설정 
sns.set(style = 'whitegrid')
plt.rcParams.update({'font.family': 'Malgun Gothic'})  # 한글 폰트
plt.figure(figsize=(14, 8))  # 전체 크기 설정

 

그래프를 만들기 전 plt.subplot(행, 열, 몇 번째) 를 써주면 됨.

1. 제조사별 도시 연비 (boxplot)

plt.subplot(2,2,1) #먼저 subplot 어디에 들어가야되는지 써주기 
sns.boxplot(data = df, x='manufacture', y='cty')
plt.xticks(rotation=90) # X축에 표시되는 틱(텍스트) 기울기
plt.title('제조사별 도시 연비')

2. 배기량 vs 고속도로 연비 (scatterplot)

plt.subplot(2,2,2)
sns.scatterplot(data=df, x='displ', y='hwy', hue='cyl', palette='viridis')
plt.title('배기량과 고속도로 연비 관계')

- 실린더(cyl) 값에 따라 색상을 다르게 표시하겠다 

- palette (색상 테마) viridis (고대비)

🔍 참고: 다른 palette 예시

  • palette='Set1' (선명한 범주형 색상)
  • palette='coolwarm' (온도 느낌의 연속 색상)
  • palette=sns.color_palette("husl") (다양한 색조)

3. 제조사별 평균 고속도로 연비 (barplot)

plt.subplot(2,2,3)
# reset_index를 사용하여 DataFrame화 해야 함
mean_hwy = df.groupby('maunfacturer')['hwy'].mean().sort_values(ascending=False).reset_index()
sns.barplot(data=mean_hwy, x='manufacturer', y='hwy')
plt.xticks(rotation=90)
plt.title('제조사별 평균 고속도로 연비')

- manufacturer(제조사별)로 데이터를 묶어서 'hwy' 고속도로 연비 컬럼만 가져와서 제조사별 평균 고속도로 연비를 구함 

- 연비값을 내림차순으로 정렬

- index 없애고 일반 컬럼으로 변경 

4. 연도별 평균 도시 연비 (lineplot)

plt.subplo(2,2,4)
mean_cty = df.groupby('year')['cty'].mean().reset_index()
sns.lineplot(data=mean_cty, x='year', y='cty',marker='o')
plt.title('연도별 평균 도시 연비')

5. 전체 레이아웃 정리 + 시각화

plt.tight_layout() #내부간격 자동 조정 
plt.show()