Matplotlib에서는 하나의 그래프에 두 개의 X축을 동시에 표시할 수 있습니다. 예를 들어 위쪽 축에는 온도를, 아래쪽 축에는 동일한 데이터를 다른 단위나 스케일로 나타내야 할 때 유용합니다. 이 글에서는 twiny() 메서드를 사용해 Y축을 공유하는 두 번째 X축을 추가하는 방법을 단계별로 살펴봅니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 주변의 여백을 자동으로 조정합니다.
- gca() 메서드로 현재 축(ax1)을 가져옵니다.
- twiny() 메서드로 Y축을 공유하는 쌍둥이 축(ax2)을 생성합니다.
- 각 축에 원하는 X축 눈금(tick) 위치를 설정합니다.
- 각 축에 X축 레이블을 지정합니다.
- show() 메서드로 결과 그래프를 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 현재 축 가져오기
ax1 = plt.gca()
# Y축을 공유하는 두 번째 X축 생성
ax2 = ax1.twiny()
# 각 축의 눈금과 레이블 설정
ax2.set_xticks([1, 2, 3, 4, 5])
ax1.set_xlabel("X-axis 1")
ax2.set_xlabel("X-axis 2")
plt.show()실행 결과

참고: 두 번째 X축을 하단으로 이동하기
twiny()로 생성한 축은 기본적으로 그림의 상단에 배치됩니다. 따라서 두 번째 X축을 첫 번째 X축 바로 아래쪽에 배치하려면 눈금과 레이블의 위치를 명시적으로 지정해 주어야 합니다.
ax2.xaxis.set_ticks_position("bottom")
ax2.xaxis.set_label_position("bottom")
ax2.spines["bottom"].set_position(("outward", 40))여기서 ("outward", 40)은 첫 번째 X축에서 두 번째 축까지의 간격을 포인트 단위로 지정한 값입니다. 이 숫자를 조절하면 두 축 사이의 거리를 자유롭게 변경할 수 있습니다.
마무리
이처럼 twiny()를 활용하면 하나의 그래프에 서로 다른 두 개의 X축 눈금 체계를 손쉽게 구현할 수 있습니다. 단위 변환, 시간-거리 대응처럼 하나의 데이터를 두 가지 관점에서 보여줘야 할 때 유용하게 활용해 보세요.