이 글은 Python matplotlib 서브플롯 생성 시 사용하는 fig, ax(s) 개념과 사용법 기초 정리를 담고 있습니다.
Python matplotlib 서브플롯 fig, ax(s) 개념
- matplotlib 라이브러리로 서브플롯 생성 시 사용하는 변수
- fig(=Figure)
Figure의 앞 글자를 따서 fig로 입력. figure 객체는 이미지 전체(프레임)를 대상으로 하며, 크기/색/서브플롯 등을 포함한다.
이는 그림이 담기는 액자와 같으며, 액자와 관련된 옵션을 다룬다고 보면 된다.
- ax(s) (=Axes, ax)
Axes를 ax 혹은 axs로 입력. axes 객체는 서브플롯을 대상으로 하며, 각 서브플롯 그래프/타이틀 등을 포함한다.
이는 액자 속 그림과 같으며, 그림과 관련된 옵션을 다룬다고 보면 된다.
Python matplotlib 서브플롯 fig, ax(s) 사용법
- plt.subplots(행 개수, 열 개수)
가장 기본 형태로, 최상단 맨 왼쪽이 (1,1)이다.
(1,1) | (1,2) | (1,3) |
(2,1) | (2,2) | (2,3) |
(3,1) | (3,2) | (3,3) |
그래프는 맨 왼쪽부터 오른쪽 방향으로 그려진다.
1 | 2 |
3 | 4 |
만약 그래프 3개를 한 줄에 1개씩 그리고 싶다면, 아래처럼 입력한다.
(쉽게 말해, 하나의 액자 속에 그림 세 개를 세로 정렬한 것이다.)
이때 plt.tight_layout()은 여러 그래프를 그릴 때, 그래프들이 겹치지 않도록 간격을 자동 설정 해준다.
import matplotlib.pyplot as plt
# 3행 1열
fig, axs = plt.subplots(3, 1)
# 겹침 방지
plt.tight_layout();
첫 번째 방법: plt.subplots(행 개수, 열 개수, 위치)
위 코드는 하나의 액자 속에 세 개의 그림이 그려질 공간들만 할당한 것이다.
이제 할당된 공간별로 그림(그래프)을 그려보자.
3행 1열로 여러 그림을 그리기 때문에, 아래 코드처럼 각 그림들의 위치를 지정해야 한다.
이때 plt.subplots(311)처럼 콤마 생략 가능하다.
fig, axs = plt.subplots(3, 1, figsize=(10,5))
# 3행 1열 중 1행
plt.subplot(3,1,1)
plt.plot(df_cust['Date_1'], df_cust['CustomerID'], color='tab:blue')
# 3행 1열 중 2행
plt.subplot(3,1,2)
plt.plot(df_cnt['Date_1'], df_cnt['InvoiceNo'], color='tab:red')
# 3행 1열 중 3행
plt.subplot(3,1,3)
plt.plot(df_country['Date_1'], df_country['Country'], color='tab:green')
plt.tight_layout();
두 번째 방법: ax[위치].plot()
위 코드와 결과는 똑같다. 대신 이 코드는 Python 인덱싱을 활용하기에, 시작값이 0이다.
따라서 첫 번째 위치에 그리고 싶다면 0부터 시작한다.
그리고 여러 그림이 있으면 헷갈리니, set_title( )로 각 그림별 제목도 추가 설정해 보자.
fig, axs = plt.subplots(3,1,figsize=(10,10))
# 3행 1열 중 1행
axs[0].plot(df_cust['Date_1'], df_cust['CustomerID'], color='tab:blue')
axs[0].set_title('Customer_cnt')
# 3행 1열 중 2행
axs[1].plot(df_cnt['Date_1'], df_cnt['InvoiceNo'],color='tab:pink')
axs[1].set_title('Order_cnt')
# 3행 1열 중 3행
axs[2].plot(df_country['Date_1'], df_country['Country'], color='tab:green')
axs[2].set_title('Country_cnt')
plt.tight_layout();
'PYTHON > Python' 카테고리의 다른 글
Python 컬럼(column) 기초 정리(컬럼명 추출, 변경, 추가 및 삭제, 순서 변경) (0) | 2024.04.15 |
---|---|
Python seaborn 서브플롯 생성 기초 정리 (1) | 2024.04.10 |
Python 머신러닝 개념 및 절차 기초 정리 (0) | 2024.04.05 |
Python 머신러닝 피처 엔지니어링(Feature Enginerring) 개념 기초 정리 (0) | 2024.04.04 |
Python 머신러닝 피처 스케일링과 min-max 정규화 기초 정리 (1) | 2024.03.28 |