소개
데이터 시각화에서 축의 눈금을 정확하게 레이블링하는 것은 필수적입니다. Matplotlib 의 EngFormatter는 공학 표기법을 사용하여 축의 눈금에 레이블을 지정할 수 있게 해주는 클래스입니다. 공학 표기법 (Engineering notation) 은 10 의 거듭제곱을 세 자리씩 묶어 사용하는 숫자의 수학적 표현 방식입니다. 이는 표준 표기법으로 읽거나 쓰기 어려운 크거나 작은 숫자를 간결하게 표현하는 방법입니다. 이 랩에서는 공학 표기법을 사용하여 축의 눈금에 레이블을 지정하는 방법을 배우겠습니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 임포트
첫 번째 단계는 필요한 라이브러리를 임포트하는 것입니다. 이 랩에서는 Matplotlib, NumPy, 그리고 EngFormatter를 사용합니다.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import EngFormatter
인공 데이터 생성
플롯할 인공 데이터를 생성해야 합니다. 이 랩에서는 주파수 (Hz) 의 로그를 전력 (Watts) 의 로그에 대해 플롯합니다. numpy 라이브러리를 사용하여 데이터를 생성합니다.
## Fixing random state for reproducibility
prng = np.random.RandomState(19680801)
## Create artificial data to plot.
## The x data span over several decades to demonstrate several SI prefixes.
xs = np.logspace(1, 9, 100)
ys = (0.8 + 0.4 * prng.uniform(size=100)) * np.log10(xs)**2
Figure 및 Subplot 생성
데이터를 표시하기 위해 figure 와 subplot 을 생성해야 합니다. 이 랩에서는 두 개의 subplot 을 나란히 생성합니다.
## Figure width is doubled (2*6.4) to display nicely 2 subplots side by side.
fig, (ax0, ax1) = plt.subplots(nrows=2, figsize=(7, 9.6))
for ax in (ax0, ax1):
ax.set_xscale('log')
공학 표기법을 사용하여 눈금 레이블 지정
이제 공학 표기법을 사용하여 x 축의 눈금에 레이블을 지정합니다. 첫 번째 subplot 에서는 기본 설정을 사용하고, 두 번째 subplot 에서는 places 및 sep 옵션을 사용하여 소수점 이하 자릿수와 숫자와 접두사/단위 사이의 구분 기호를 지정합니다.
## Demo of the default settings, with a user-defined unit label.
ax0.set_title('Full unit ticklabels, w/ default precision & space separator')
formatter0 = EngFormatter(unit='Hz')
ax0.xaxis.set_major_formatter(formatter0)
ax0.plot(xs, ys)
ax0.set_xlabel('Frequency')
## Demo of the options `places` (number of digit after decimal point) and
## `sep` (separator between the number and the prefix/unit).
ax1.set_title('SI-prefix only ticklabels, 1-digit precision & '
'thin space separator')
formatter1 = EngFormatter(places=1, sep="\N{THIN SPACE}") ## U+2009
ax1.xaxis.set_major_formatter(formatter1)
ax1.plot(xs, ys)
ax1.set_xlabel('Frequency [Hz]')
플롯 표시
이제 plt.show() 함수를 사용하여 플롯을 표시합니다.
plt.tight_layout()
plt.show()
요약
이 랩에서는 공학 표기법을 사용하여 축의 눈금에 레이블을 지정하는 방법을 배웠습니다. Matplotlib 의 EngFormatter 클래스를 사용하여 플롯의 x 축 눈금에 레이블을 지정했습니다. 또한 EngFormatter 옵션 places 및 sep을 사용하여 서브플롯을 생성하고 눈금 레이블을 사용자 정의하는 방법도 배웠습니다. 공학 표기법은 표준 표기법으로 읽거나 쓰기 어려운 크거나 작은 숫자를 간결하고 명확하게 표현하는 방법입니다.