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

Matplotlib subplot2grid에서 X축 공유하는 방법

Matplotlib에서 subplot2grid를 사용할 때 여러 서브플롯 간에 X축을 공유하려면 sharex 매개변수를 활용하면 됩니다. 아래 단계를 따라 진행해 보세요.

구현 단계

  • numpy를 사용하여 데이터 t, x, y1, y2를 생성합니다.
  • figure() 메서드로 새 figure를 생성하거나 기존 figure를 활성화합니다.
  • subplot2grid()를 사용하여 일반 그리드 내 특정 위치에 첫 번째 서브플롯을 만듭니다. 이때 colspan=3, rowspan=2로 설정합니다.
  • 같은 방식으로 두 번째 서브플롯을 생성하되, colspan=3과 함께 sharex=ax1 옵션을 지정하여 첫 번째 서브플롯과 X축을 공유합니다.
  • plot() 메서드를 사용해 t와 y1, y2의 곡선을 각각 그립니다.
  • tight_layout()으로 서브플롯 사이와 주변의 여백을 자동으로 조정합니다.
  • show() 메서드를 호출하여 figure를 화면에 표시합니다.

예제 코드

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
t = np.arange(0.0, 2.0, 0.01)

x = np.sin(2 * np.pi * t)
y1 = np.exp(-t)
y2 = x * y1
fig = plt.figure()
ax1 = plt.subplot2grid((4, 3), (0, 0), colspan=3, rowspan=2)
ax2 = plt.subplot2grid((4, 3), (2, 0), colspan=3, sharex=ax1)

ax1.plot(t, y1, c='red')
ax2.plot(t, y2, c='orange')

plt.tight_layout()

plt.show()

코드 설명

위 코드에서 핵심은 sharex=ax1 부분입니다. 두 번째 서브플롯(ax2)을 생성할 때 이 옵션을 지정하면 ax1과 동일한 X축 범위와 눈금을 공유하게 됩니다. 덕분에 한쪽에서 확대하거나 축 범위를 변경하면 다른 쪽도 함께 연동되어, 시간축(t)을 기준으로 위아래 데이터를 비교하기 훨씬 편리해집니다.

그리드 크기는 (4, 3)으로 정의되어 있으며, ax1은 (0, 0) 위치에서 3칸 폭과 2칸 높이를 차지하고, ax2는 (2, 0) 위치에서 3칸 폭을 차지합니다. 이렇게 하면 상단에는 넓은 영역의 그래프가, 하단에는 그 아래 붙는 그래프가 배치됩니다.

실행 결과

코드를 실행하면 빨간색 곡선(y1)과 주황색 곡선(y2)이 각각의 서브플롯에 그려지며, 두 그래프는 X축을 공유하는 것을 확인할 수 있습니다.