눈금 사이 레이블 중앙 정렬

Beginner

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

소개

이 랩에서는 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() 함수를 사용하고 tick1Ontick2On 매개변수를 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 주식 가격에 대한 금융 데이터를 사용하여 이 기술을 시연했으며 다음 단계를 따랐습니다.

  1. 금융 데이터 로드
  2. 플롯 생성
  3. 주요 및 보조 로케이터 (locator) 및 포맷터 (formatter) 설정
  4. 주요 눈금 레이블 및 보조 눈금 제거
  5. 보조 눈금 레이블을 주요 눈금 사이의 가운데에 정렬
  6. 플롯 표시