Matplotlib 반복 규칙을 사용한 날짜 눈금 사용자 정의

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 Matplotlib 에서 반복 규칙을 사용하여 날짜 눈금을 배치하는 방법을 배우게 됩니다. iCalendar RFC_는 날짜 시퀀스를 정의하는 반복 규칙 (rrules) 을 지정합니다. Matplotlib 에서 rrules 를 사용하여 날짜 눈금을 배치할 수 있습니다. 이 예제는 5 년마다 부활절에 사용자 정의 날짜 눈금을 설정합니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 액세스하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화할 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

필요한 라이브러리 가져오기

먼저 Matplotlib, NumPy 및 datetime 을 포함한 필요한 라이브러리를 가져와야 합니다.

import datetime
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.dates import (YEARLY, DateFormatter, RRuleLocator, drange,
                              rrulewrapper)

랜덤 시드 설정

이 예제에서는 임의의 데이터를 생성하므로 재현성을 위해 랜덤 시드를 설정해야 합니다.

np.random.seed(19680801)

재귀 규칙 설정

5 번째 부활절마다 사용자 정의 날짜 눈금을 설정할 것입니다. 이를 위해 rrulewrapper 함수를 사용하여 재귀 규칙을 설정해야 합니다.

rule = rrulewrapper(YEARLY, byeaster=1, interval=5)

눈금 로케이터 및 포맷터 설정

이전 단계에서 설정한 재귀 규칙을 기반으로 눈금 로케이터를 설정하기 위해 RRuleLocator 함수를 사용합니다. 또한 눈금 포맷터를 설정하기 위해 DateFormatter 함수를 사용합니다.

loc = RRuleLocator(rule)
formatter = DateFormatter('%m/%d/%y')

날짜 설정 및 임의 데이터 생성

시작 및 종료 날짜와 각 날짜 간의 차이를 나타내는 델타 (delta) 를 설정해야 합니다. 또한 예제를 위해 임의 데이터를 생성해야 합니다.

date1 = datetime.date(1952, 1, 1)
date2 = datetime.date(2004, 4, 12)
delta = datetime.timedelta(days=100)

dates = drange(date1, date2, delta)
s = np.random.rand(len(dates))

데이터 플롯 및 x 축 눈금 설정

마지막으로, plot 함수를 사용하여 데이터를 플롯하고, 앞서 설정한 눈금 로케이터 및 포맷터 함수를 사용하여 x 축 눈금을 설정할 수 있습니다.

fig, ax = plt.subplots()
plt.plot(dates, s, 'o')
ax.xaxis.set_major_locator(loc)
ax.xaxis.set_major_formatter(formatter)
ax.xaxis.set_tick_params(rotation=30, labelsize=10)
plt.show()

요약

이 랩에서는 Matplotlib 에서 반복 규칙 (recurrence rules) 을 사용하여 플롯에 사용자 정의 날짜 눈금을 배치하는 방법을 배웠습니다. 먼저 rrulewrapper 함수를 사용하여 반복 규칙을 설정한 다음, RRuleLocatorDateFormatter 함수를 사용하여 눈금 로케이터 (tick locator) 및 포맷터 (formatter) 를 설정했습니다. 마지막으로 데이터를 플롯하고 눈금 로케이터 및 포맷터 함수를 사용하여 x 축 눈금을 설정했습니다.