Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Matplotlib에서 개별 서브플롯의 높이를 조정하는 방법

Matplotlib에서 subplot() 함수의 행(row)과 열(column) 개수를 다르게 지정하면, 하나의 피겨 안에서 각 서브플롯의 높이와 크기를 자유롭게 배치할 수 있습니다. 아래 단계별로 살펴보겠습니다.

구현 단계

  1. 피겨 크기를 설정하고, 서브플롯 사이 및 주변 여백(padding)을 자동으로 조정합니다.
  2. plt.subplot(7, 2, 1) — 7행 × 2열 그리드에서 1번째 위치에 서브플롯을 추가합니다.
  3. plt.subplot(2, 2, 3) — 2행 × 2열 그리드에서 3번째 위치에 서브플롯을 추가합니다.
  4. plt.subplot(1, 3, 3) — 1행 × 3열 그리드에서 3번째 위치에 서브플롯을 추가합니다.
  5. show() 메서드를 사용해 피겨를 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt

# 피겨 크기 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
# 서브플롯 간 여백 자동 조정
plt.rcParams["figure.autolayout"] = True

# 서로 다른 그리드 구조로 서브플롯 배치
plt.subplot(7, 2, 1)   # 7행 2열 그리드의 1번째 → 납작한 높이
plt.subplot(2, 2, 3)   # 2행 2열 그리드의 3번째 → 중간 높이
plt.subplot(1, 3, 3)   # 1행 3열 그리드의 3번째 → 가장 큰 높이

plt.show()

동작 원리

핵심은 각 서브플롯이 속한 그리드의 행(row) 수입니다. 행 수가 많을수록 해당 서브플롯이 차지하는 세로 공간이 작아집니다. 예를 들어 7행 그리드의 서브플롯은 피겨 전체 높이의 약 1/7만 차지하지만, 1행 그리드의 서브플롯은 훨씬 넓은 세로 공간을 확보하게 됩니다.

이처럼 서로 다른 nrows, ncols, index 값을 조합하면 균일하지 않은 비대칭 레이아웃도 손쉽게 만들 수 있습니다.

참고: 더 정교한 제어가 필요하다면

복잡한 레이아웃을 다룰 때는 matplotlib.gridspec.GridSpec을 사용하는 것이 좋습니다. height_ratios 옵션을 활용하면 각 행의 높이 비율을 직관적으로 지정할 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다.