Pandas를 활용하면 날짜(시간)와 값 데이터를 담은 데이터프레임을 손쉽게 만들 수 있고, 이를 바탕으로 원하는 형태의 시계열 그래프를 그릴 수 있습니다. 이 글에서는 기본적인 시계열 플롯을 생성한 뒤, Matplotlib의 mdates 모듈을 사용해 X축의 메이저(major)·마이너(minor) 눈금과 레이블을 세밀하게 조정하는 방법까지 예제 코드와 함께 살펴봅니다.
구현 단계
기본 BitGenerator(PCG64)를 사용하는 새로운 Generator 객체를 생성합니다.
Pandas의
date_range()를 이용해 '2020-01-01'부터 '2021-01-01'까지 일(Day) 단위의 고정 빈도 DatetimeIndex를 만듭니다.로그정규(log-normal) 분포에서 샘플 값을 추출합니다.
위 데이터를 바탕으로 데이터프레임을 구성합니다.
데이터프레임의
plot()메서드로figsize=(10, 5)크기의 그래프를 생성합니다.plt.show()메서드를 호출해 그래프를 화면에 표시합니다.
예제 코드
import numpy as np import pandas as pd from matplotlib import pyplot as plt rng = np.random.default_rng(seed=1) date_day = pd.date_range(start='2020-01-01', end='2021-01-01', freq='D') traffic = rng.lognormal(sigma=2, size=date_day.size) df_day = pd.DataFrame(dict(speed=[pow(2, -i) for i in range(len(date_day))]), index=date_day) df_day.plot(figsize=(10, 5)) plt.show()
실행 결과

X축 메이저·마이너 눈금 및 레이블 설정하기
기본 플롯은 눈금 간격이 자동으로 결정되기 때문에 원하는 주기대로 표시되지 않을 수 있습니다. 이럴 때는 matplotlib.dates 모듈의 Locator와 Formatter를 사용하면 됩니다. 아래 예제는 메이저 눈금을 매월 1일로, 마이너 눈금을 매주 월요일로 지정하고, 메이저 눈금 레이블 형식을 '연-월'로 변경하는 코드입니다.
import matplotlib.dates as mdates
fig, ax = plt.subplots(figsize=(10, 5))
df_day.plot(ax=ax)
# 메이저 눈금: 매월 1일, 레이블 형식 'YYYY-MM'
ax.xaxis.set_major_locator(mdates.MonthLocator())
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
# 마이너 눈금: 매주 월요일
ax.xaxis.set_minor_locator(mdates.WeekdayLocator(byweekday=mdates.MO))
plt.show()MonthLocator(), WeekdayLocator() 외에도 DayLocator(), HourLocator() 등 다양한 로케이터가 제공되므로, 데이터의 시간 단위에 맞게 눈금 간격을 자유롭게 조절할 수 있습니다. 눈금 레이블의 크기나 회전 각도를 바꾸려면 plt.xticks(rotation=45)처럼 옵션을 추가하면 됩니다.