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까지)을 공유하므로 완전히 동일한 가로 스케일로 표시됩니다.


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