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

Matplotlib로 Python 서브플롯에 동일한 스케일(축 범위) 설정하는 방법

Matplotlib을 사용하면 여러 개의 서브플롯(subplot)이 하나의 그림 안에 배치될 때, 각 플롯의 축 범위가 서로 달라 비교하기 어려운 경우가 있습니다. 이때 sharex 또는 sharey 옵션을 활용하면 서브플롯 간에 축을 공유하여 동일한 스케일을 유지할 수 있습니다.

아래 단계를 따라 Python에서 Matplotlib으로 서브플롯에 동일한 스케일을 설정하는 방법을 알아보겠습니다.

구현 단계

  • 그림(figure) 크기를 설정하고, 서브플롯 사이와 주변의 여백(padding)을 자동으로 조정합니다.
  • 새로운 그림을 생성하거나 기존 그림을 활성화합니다.
  • add_subplot() 메서드를 사용해 2행 1열(nrows=2, ncols=1) 배열의 첫 번째 위치(index=1)에 첫 번째 축 'ax1'을 추가합니다.
  • 같은 방식으로 두 번째 위치(index=2)에 두 번째 축 'ax2'를 추가하되, sharex=ax1 옵션을 지정하여 X축을 공유합니다. 이렇게 하면 두 서브플롯이 동일한 X축 스케일을 갖게 됩니다.
  • 사인(sine) 곡선과 코사인(cosine) 곡선을 그리기 위한 데이터 포인트 t를 생성합니다.
  • ax1에는 사인 곡선을, ax2에는 코사인 곡선을 각각 다른 색상으로 시각화합니다.
  • 마지막으로 show() 메서드를 호출하여 그림을 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

# 그림 크기 설정
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

# 그림 생성
fig = plt.figure()

# 축 추가 - sharex로 X축 공유
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2, sharex=ax1)

# 데이터 포인트 생성
t = np.linspace(-5, 5, 100)

# ax1과 ax2에 각각 사인/코사인 곡선 플롯
ax1.plot(t, np.sin(2 * np.pi * t), color='red', lw=4)
ax2.plot(t, np.cos(2 * np.pi * t), color='orange', lw=4)

plt.show()

실행 결과

위 코드를 실행하면 아래와 같은 출력 결과를 얻을 수 있습니다. 상단 플롯에는 빨간색 사인 곡선이, 하단 플롯에는 주황색 코사인 곡선이 그려지며, 두 서브플롯은 X축(-5부터 5까지)을 공유하므로 완전히 동일한 가로 스케일로 표시됩니다.

Matplotlib로 Python 서브플롯에 동일한 스케일(축 범위) 설정하는 방법Matplotlib로 Python 서브플롯에 동일한 스케일(축 범위) 설정하는 방법

핵심 포인트 정리

  • fig.add_subplot(2, 1, 2, sharex=ax1): sharex 매개변수에 앞서 만든 축 객체를 전달하면 X축이 공유됩니다.
  • Y축 스케일을 통일하고 싶다면 sharey 옵션을, X·Y축 모두 공유하려면 두 옵션을 함께 사용하면 됩니다.
  • X축을 공유하면 하단 플롯의 눈금 레이블이 자동으로 정리되어 그림이 더 깔끔하게 표현됩니다.