Matplotlib에서 subplot() 함수의 행(row)과 열(column) 개수를 다르게 지정하면, 하나의 피겨 안에서 각 서브플롯의 높이와 크기를 자유롭게 배치할 수 있습니다. 아래 단계별로 살펴보겠습니다.
구현 단계
- 피겨 크기를 설정하고, 서브플롯 사이 및 주변 여백(padding)을 자동으로 조정합니다.
plt.subplot(7, 2, 1)— 7행 × 2열 그리드에서 1번째 위치에 서브플롯을 추가합니다.plt.subplot(2, 2, 3)— 2행 × 2열 그리드에서 3번째 위치에 서브플롯을 추가합니다.plt.subplot(1, 3, 3)— 1행 × 3열 그리드에서 3번째 위치에 서브플롯을 추가합니다.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 옵션을 활용하면 각 행의 높이 비율을 직관적으로 지정할 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다.