개요
Matplotlib으로 여러 개의 서브플롯을 세로로 배치하면, 인접한 서브플롯 경계 부근에서 Y축의 첫 번째(가장 아래) 눈금 레이블과 마지막(가장 위) 눈금 레이블이 서로 겹쳐 보기 불편한 경우가 자주 발생합니다. 이럴 때 해당 눈금 레이블만 선택적으로 숨기면 그래프를 훨씬 깔끔하게 정리할 수 있습니다.
각 Y축 서브플롯의 첫 번째와 마지막 눈금 레이블을 제거하려면 다음 단계를 따르면 됩니다.
- 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변의 여백을 조정합니다.
- figure와 서브플롯 집합을 생성합니다.
- 축(axes)을 순회하면서 첫 번째와 마지막 눈금 레이블의 visible=False로 설정합니다.
- show() 메서드를 호출하여 그림을 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig, ax = plt.subplots(2, sharex=True)
for a in ax:
plt.setp(a.get_yticklabels()[0], visible=False)
plt.setp(a.get_yticklabels()[-1], visible=False)
plt.show()코드 설명
- plt.rcParams: 그림 크기를 7.50 × 3.50인치로 지정하고, figure.autolayout 옵션을 활성화해 서브플롯 간 여백을 자동으로 조절합니다.
- plt.subplots(2, sharex=True): X축을 공유하는 두 개의 세로 방향 서브플롯을 한 번에 생성합니다.
- a.get_yticklabels()[0]: 가장 아래쪽(첫 번째) 눈금 레이블을, [-1]: 가장 위쪽(마지막) 눈금 레이블을 가리킵니다.
- plt.setp(..., visible=False): 해당 눈금 레이블 객체의 속성을 변경하여 화면에서만 숨깁니다. 눈금(tick) 자체나 데이터에는 영향을 주지 않습니다.
실행 결과

위 코드를 실행하면 두 서브플롯 모두 Y축의 맨 위와 맨 아래 눈금 레이블이 표시되지 않아, 인접한 서브플롯 사이의 레이블 겹침 없이 깔끔한 그래프를 얻을 수 있습니다.