Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 플롯에서 날짜·시간 눈금 레이블 빈도를 변경하는 방법

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'처럼 형식 문자열을 자유롭게 변경할 수 있습니다.

실행 결과

Matplotlib 플롯에서 날짜·시간 눈금 레이블 빈도를 변경하는 방법