Matplotlib 날짜 플롯

Beginner

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

소개

이 랩에서는 Python 의 Matplotlib 을 사용하여 날짜 플롯을 만드는 방법을 배웁니다. matplotlib.dates 모듈을 사용하여 datetime 객체를 Matplotlib 의 내부 표현으로 변환합니다. 또한 x 축의 눈금 레이블 형식을 지정하여 날짜를 읽기 쉬운 형식으로 표시하는 방법도 배웁니다.

VM 팁

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

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

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

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

matplotlib.pyplot, matplotlib.cbook, 그리고 matplotlib.dates를 포함한 필요한 라이브러리를 가져오는 것으로 시작합니다.

import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import matplotlib.dates as mdates

데이터 로드

다음으로, 플롯하려는 데이터를 로드합니다. mpl-data/sample_data 디렉토리에서 날짜, 시가, 고가, 저가, 종가, 거래량, 수정 종가 (adj_close) 필드가 있는 Yahoo CSV 데이터에서 numpy record array 를 사용합니다. record array 는 날짜 열에서 'D' 단위로 np.datetime64 로 날짜를 저장합니다.

data = cbook.get_sample_data('goog.npz')['price_data']

서브플롯 생성

눈금 레이블 (tick label) 에 대한 다양한 형식 옵션을 표시하기 위해 세 개의 서브플롯을 생성합니다.

fig, axs = plt.subplots(3, 1, figsize=(6.4, 7), layout='constrained')

데이터 플롯

plot 함수를 사용하여 세 개의 모든 서브플롯에 데이터를 플롯합니다.

for ax in axs:
    ax.plot('date', 'adj_close', data=data)
    ax.grid(True)
    ax.set_ylabel(r'Price [\$]')

기본 포맷터를 사용하여 눈금 레이블 형식 지정

첫 번째 서브플롯의 눈금 레이블을 기본 포맷터 (default formatter) 를 사용하여 형식 지정합니다.

ax = axs[0]
ax.set_title('DefaultFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_locator(mdates.MonthLocator(bymonth=(1, 7)))
ax.xaxis.set_minor_locator(mdates.MonthLocator())

간결한 포맷터를 사용하여 눈금 레이블 형식 지정

두 번째 서브플롯의 눈금 레이블을 간결한 포맷터 (concise formatter) 를 사용하여 형식 지정합니다.

ax = axs[1]
ax.set_title('ConciseFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.ConciseDateFormatter(ax.xaxis.get_major_locator()))

수동으로 눈금 레이블 형식 지정

세 번째 서브플롯의 눈금 레이블을 DateFormatter를 사용하여 수동으로 형식 지정하며, datetime.date.strftime에 문서화된 형식 문자열을 사용하여 날짜 형식을 지정합니다.

ax = axs[2]
ax.set_title('Manual DateFormatter', loc='left', y=0.85, x=0.02, fontsize='medium')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%b'))
for label in ax.get_xticklabels(which='major'):
    label.set(rotation=30, horizontalalignment='right')

플롯 표시

마지막으로, show 함수를 사용하여 플롯을 표시합니다.

plt.show()

요약

이 랩에서는 Python 에서 Matplotlib 를 사용하여 날짜 플롯을 만드는 방법을 배웠습니다. matplotlib.dates 모듈을 사용하여 datetime 객체를 Matplotlib 의 내부 표현으로 변환했습니다. 또한 x 축의 눈금 레이블을 읽기 쉬운 형식으로 표시하도록 서식을 지정하는 방법도 배웠습니다.