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

Matplotlib에서 축 생성 후 서브플롯 크기와 위치 변경하기

Matplotlib에서는 축(axes)을 생성한 이후에도 서브플롯의 크기나 위치를 자유롭게 조정할 수 있습니다. GridSpec 클래스를 활용하면 그리드 기반 레이아웃을 정의하고, 이미 만들어진 축의 위치를 동적으로 변경할 수 있습니다.

구현 단계

  • figure() 메서드를 사용해 새 figure를 생성하거나 기존 figure를 활성화합니다.
  • add_subplot() 메서드로 서브플롯 형태의 '~.axes.Axes'를 figure에 추가합니다.
  • GridSpec() 클래스를 사용해 figure 내부에 서브플롯을 배치할 그리드 레이아웃을 정의합니다.
  • 그리드 스펙(grid spec)의 위치를 설정합니다.
  • set_subplotspec()으로 subplotspec 인스턴스를 지정합니다.
  • gridspec 인스턴스와 함께 add_subplot() 메서드를 사용해 새로운 축을 추가합니다.
  • 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
  • show() 메서드로 figure를 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
from matplotlib import gridspec as gridspec
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111)
gs = gridspec.GridSpec(3, 1)
ax.set_position(gs[0:2].get_position(fig))
ax.set_subplotspec(gs[0:2])
fig.add_subplot(gs[2])
fig.tight_layout()
plt.show()

코드 설명

위 예제에서는 먼저 add_subplot(111)으로 하나의 축을 생성한 뒤, 세 개의 행(row)을 가지는 GridSpec 객체를 만듭니다. 그다음 gs[0:2] 즉, 첫 번째와 두 번째 행 전체를 차지하도록 기존 축의 위치를 재설정하고, 마지막 세 번째 행에는 새로운 서브플롯을 추가합니다. 결과적으로 위쪽 서브플롯이 아래쪽 서브플롯보다 두 배 큰 세로 공간을 차지하는 레이아웃이 완성됩니다.

출력 결과

Matplotlib에서 축 생성 후 서브플롯 크기와 위치 변경하기

이 방식은 대시보드나 복잡한 시각화 레이아웃에서 특정 플롯의 비율을 유동적으로 조정해야 할 때 매우 유용합니다. 특히 실행 중간에 레이아웃을 변경해야 하는 상황에서도 코드 수정 없이 축의 위치만 간단히 갱신할 수 있다는 점이 큰 장점입니다.