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

Matplotlib에서 모든 서브플롯에 동일한 축 범위 설정하는 방법

개요

Matplotlib에서 모든 서브플롯(subplot)에 동일한 축 범위를 적용하려면 subplot() 메서드를 사용해 2행 2열(nrows=2, ncols=2) 구조의 4개 서브플롯을 생성하고, x축과 y축을 공유하도록 설정하면 됩니다. 축을 공유하면 기준 축의 범위가 나머지 서브플롯에 자동으로 동기화되어 코드가 간결해지고 그래프 간 비교도 쉬워집니다.

구현 단계

  • 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백을 조정합니다.

  • 현재 그림의 인덱스 1 위치에 서브플롯을 추가합니다.

  • set_xlim()set_ylim() 메서드를 사용해 x축과 y축의 표시 범위를 지정합니다.

  • 첫 번째 축(ax1)에 선 그래프를 그립니다.

  • 인덱스 2 위치에 서브플롯을 추가하고 ax1과 동일한 축 범위를 공유하도록 설정한 뒤 선 그래프를 그립니다.

  • 같은 방식으로 인덱스 3 위치의 서브플롯에도 축을 공유하며 선 그래프를 그립니다.

  • 인덱스 4 위치의 서브플롯에도 동일하게 축을 공유하고 선 그래프를 그립니다.

  • show() 메서드를 사용해 최종 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
ax1 = plt.subplot(2, 2, 1)
ax1.set_xlim(left=0, right=5)
ax1.set_ylim(bottom=0, top=5)
ax1.plot([1, 4, 3])
ax2 = plt.subplot(2, 2, 2, sharey=ax1, sharex=ax1)
ax2.plot([3, 4, 1])
ax3 = plt.subplot(2, 2, 4, sharey=ax1, sharex=ax1)
ax3.plot([2, 4, 2])
ax4 = plt.subplot(2, 2, 3, sharey=ax1, sharex=ax1)
ax4.plot([4, 0, 4])
plt.show()

핵심 포인트

sharexsharey 매개변수에 기준이 되는 축 객체(여기서는 ax1)를 전달하면, 해당 축에 설정된 xlim·ylim 값이 다른 서브플롯에 그대로 적용됩니다. 이 방식은 각 서브플롯마다 축 범위를 반복해서 지정하는 것보다 효율적이며, 나중에 기준 축의 범위가 변경되더라도 공유된 축들이 함께 자동으로 업데이트됩니다.

실행 결과

Matplotlib에서 모든 서브플롯에 동일한 축 범위 설정하는 방법