Matplotlib 플롯에서 날짜(datetime) 눈금 레이블의 표시 빈도를 변경하려면 Pandas 데이터프레임을 생성한 뒤 원하는 날짜 범위로 플롯을 그리고, matplotlib.dates(mdates) 모듈의 로케이터와 포매터를 활용하면 됩니다.
구현 단계
- 그림(figure) 크기를 설정하고 서브플롯 사이 및 주변 여백(padding)을 조정합니다.
- 날짜 형식의 표 형태 데이터를 다루기 위해 Pandas 데이터프레임을 사용합니다.
- plot() 메서드를 이용해 데이터프레임을 시각화합니다.
- X축의 메인 로케이터(major locator), 즉 눈금(ticks) 위치를 설정합니다.
- X축의 메인 포매터(major formatter), 즉 눈금 레이블 형식을 지정합니다.
- autofmt_xdate()를 호출합니다. 날짜 눈금 레이블은 자주 겹치기 때문에 레이블을 회전시키고 오른쪽으로 정렬하면 가독성이 크게 향상됩니다.
- show() 메서드로 최종 그래프를 화면에 표시합니다.
예제 코드
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
index = pd.date_range(start="2020-07-01", end="2021-01-01", freq="D")
index = [pd.to_datetime(date, format='%Y-%m-%d').date() for date in index]
data = np.random.randint(1, 100, size=len(index))
df = pd.DataFrame(data=data, index=index, columns=['data'])
ax = df.plot()
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y'))
plt.gcf().autofmt_xdate()
plt.show()코드 핵심 설명
mdates.MonthLocator(interval=1)는 X축에 매월 눈금을 하나씩 배치하도록 지정합니다. interval 값을 2나 3으로 바꾸면 두 달 또는 세 달 간격으로 눈금 빈도를 조절할 수 있습니다.
mdates.DateFormatter('%d-%m-%Y')는 눈금 레이블을 '일-월-연도' 형식으로 표시합니다. 필요에 따라 '%Y-%m'처럼 형식 문자열을 자유롭게 변경할 수 있습니다.
실행 결과
