Matplotlib에서 날짜 데이터에 대한 xticklabels(x축 눈금 레이블)를 설정하려면 아래 단계를 따르면 됩니다.
단계별 절차
- 그림(figure) 크기를 설정하고 서브플롯 주변의 여백을 조정합니다.
- epoch 값과 value 값으로 이루어진 두 개의 리스트를 생성합니다.
- epoch 값으로부터 사람이 읽을 수 있는 날짜 문자열 리스트를 만듭니다.
- figure와 subplot을 생성합니다.
- plot() 메서드를 사용해 날짜와 값을 그래프로 그립니다.
- xticklabels를 설정한 후, DateFormatter로 날짜 포매터를 만들어 x축의 major formatter로 지정합니다.
- 눈금 레이블끼리 겹치지 않도록 rotation 옵션으로 10도 회전시킵니다.
- show() 메서드를 호출하여 그래프를 화면에 표시합니다.
예제 코드
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import time
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
epochs = [1259969793926, 1259969793927, 1259969793929, 1259969793928, 1259969793939]
values = [-0.5, -0.5, -0.75, -0.5, -1.25]
dates = [time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(date)) for date in epochs]
fig, axes = plt.subplots(1, 1)
line1, = axes.plot(dates, values, lw=2, marker='*', color='r')
axes.set_xticklabels(dates)
fmt = mdates.DateFormatter('%Y-%m-%d %H:%M:%S')
axes.xaxis.set_major_formatter(fmt)
axes.tick_params(rotation=10)
plt.show()
실행 결과
위 코드를 실행하면 다음과 같은 그래프가 출력됩니다.

이처럼 matplotlib.dates 모듈의 DateFormatter를 활용하면 밀리초 단위의 epoch 타임스탬프를 'YYYY-MM-DD HH:MM:SS' 형식의 가독성 높은 날짜 레이블로 손쉽게 변환할 수 있습니다. 또한 tick_params(rotation=10)을 사용하면 긴 날짜 문자열이 서로 겹치는 문제를 방지할 수 있어 시계열 데이터 시각화에 매우 유용합니다.