소개
이 랩에서는 Python 을 사용하여 Matplotlib 플롯에서 눈금 사이에 레이블을 가운데 정렬하는 방법을 배웁니다. 기본적으로 눈금 레이블은 관련 눈금에 상대적으로 정렬되지만, 눈금 사이에 레이블을 직접 가운데 정렬하는 방법은 없습니다. 하지만 주 눈금 사이에 보조 눈금에 레이블을 배치하고 주 눈금 레이블과 보조 눈금을 숨겨 이 동작을 흉내낼 수 있습니다. 이 기술을 시연하기 위해 Google 주식 가격에 대한 금융 데이터를 사용합니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위한 Jupyter Notebook에 액세스하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화할 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
금융 데이터 로드
먼저, Matplotlib 의 cbook.get_sample_data() 함수를 사용하여 Google 주식 가격에 대한 금융 데이터를 로드해야 합니다. 마지막 250 일의 데이터를 사용합니다.
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook
## Load some financial data; Google's stock price
r = cbook.get_sample_data('goog.npz')['price_data'].view(np.recarray)
r = r[-250:] ## get the last 250 days
플롯 생성
다음으로, Matplotlib 의 subplots() 함수를 사용하여 플롯을 생성하고 시간에 따른 Google 주식의 조정 종가를 플롯합니다.
fig, ax = plt.subplots()
ax.plot(r.date, r.adj_close)
주요 및 보조 로케이터와 포맷터 설정
눈금 사이의 레이블을 가운데 정렬하려면 x 축에 대한 주요 및 보조 로케이터와 포맷터를 설정해야 합니다. dates.MonthLocator() 함수를 사용하여 주요 및 보조 로케이터를 월로 설정하고, dates.DateFormatter() 함수를 사용하여 보조 눈금 레이블을 월 약어로 포맷합니다.
import matplotlib.dates as dates
import matplotlib.ticker as ticker
ax.xaxis.set_major_locator(dates.MonthLocator())
## 16 is a slight approximation since months differ in number of days.
ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=16))
ax.xaxis.set_major_formatter(ticker.NullFormatter())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%b'))
주요 눈금 레이블 및 보조 눈금 제거
눈금 사이의 레이블을 가운데 정렬하는 동작을 흉내내려면 주요 눈금 레이블과 보조 눈금을 제거하고 보조 눈금 레이블만 표시해야 합니다. tick_params() 함수를 사용하고 tick1On 및 tick2On 매개변수를 False로 설정하여 이를 수행할 수 있습니다.
## Remove the tick lines
ax.tick_params(axis='x', which='minor', tick1On=False, tick2On=False)
보조 눈금 레이블 정렬
마지막으로, 보조 눈금 레이블을 주요 눈금 사이의 가운데에 정렬해야 합니다. get_xticklabels() 함수를 사용하고 minor 매개변수를 True로 설정하여 보조 눈금 레이블을 가져올 수 있습니다. 그런 다음 레이블을 반복 처리하고 수평 정렬을 'center'로 설정할 수 있습니다.
## Align the minor tick label
for label in ax.get_xticklabels(minor=True):
label.set_horizontalalignment('center')
imid = len(r) // 2
ax.set_xlabel(str(r.date[imid].item().year))
플롯 표시
이제 show() 함수를 사용하여 플롯을 표시할 수 있습니다.
plt.show()
요약
이 Lab 에서는 Python 을 사용하여 Matplotlib 플롯에서 눈금 사이의 레이블을 가운데 정렬하는 방법을 배웠습니다. Google 주식 가격에 대한 금융 데이터를 사용하여 이 기술을 시연했으며 다음 단계를 따랐습니다.
- 금융 데이터 로드
- 플롯 생성
- 주요 및 보조 로케이터 (locator) 및 포맷터 (formatter) 설정
- 주요 눈금 레이블 및 보조 눈금 제거
- 보조 눈금 레이블을 주요 눈금 사이의 가운데에 정렬
- 플롯 표시