소개
이 랩의 목적은 왼쪽 및 오른쪽 y 축에 두 개의 눈금을 표시하는 방법을 시연하는 것입니다. 이 예제에서는 화씨 (Fahrenheit) 와 섭씨 (Celsius) 눈금을 사용합니다. 첫 번째 축에 따라 두 번째 축을 업데이트하기 위해 클로저 함수를 콜백 (callback) 으로 등록하여 사용합니다.
VM 팁
VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접근하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.
학습 중에 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
필요한 라이브러리 가져오기
먼저, numpy 및 matplotlib.pyplot 라이브러리를 가져와야 합니다.
import matplotlib.pyplot as plt
import numpy as np
화씨를 섭씨로 변환하는 함수 정의
다음으로, 화씨 온도를 섭씨로 변환하는 함수를 정의합니다.
def fahrenheit2celsius(temp):
"""
화씨 온도가 주어졌을 때 섭씨 온도를 반환합니다.
"""
return (5. / 9.) * (temp - 32)
두 번째 축을 업데이트하는 함수 정의
첫 번째 축에 따라 두 번째 축을 업데이트하기 위해 클로저 함수를 콜백 (callback) 으로 등록하여 정의합니다.
def convert_ax_c_to_celsius(ax_f):
"""
첫 번째 축에 따라 두 번째 축을 업데이트합니다.
"""
y1, y2 = ax_f.get_ylim()
ax_c.set_ylim(fahrenheit2celsius(y1), fahrenheit2celsius(y2))
ax_c.figure.canvas.draw()
플롯 생성
이제 matplotlib.pyplot의 subplots() 함수를 사용하여 두 개의 y 축이 있는 플롯을 생성합니다. 또한 첫 번째 축의 ylim_changed 이벤트를 convert_ax_c_to_celsius() 함수에 연결합니다.
fig, ax_f = plt.subplots()
ax_c = ax_f.twinx()
ax_f.callbacks.connect("ylim_changed", convert_ax_c_to_celsius)
데이터 플롯
첫 번째 축의 plot() 함수를 사용하여 데이터를 플롯합니다.
ax_f.plot(np.linspace(-40, 120, 100))
축 제한 및 레이블 설정
x 축 제한을 (0, 100) 으로 설정하고, y 축 레이블과 제목을 설정합니다.
ax_f.set_xlim(0, 100)
ax_f.set_title('Two scales: Fahrenheit and Celsius')
ax_f.set_ylabel('Fahrenheit')
ax_c.set_ylabel('Celsius')
플롯 표시
마지막으로, matplotlib.pyplot의 show() 함수를 사용하여 플롯을 표시합니다.
plt.show()
요약
이 랩에서는 Python Matplotlib 을 사용하여 왼쪽 및 오른쪽 y 축에 두 개의 스케일을 표시하는 방법을 배웠습니다. 클로저 함수를 사용하여 첫 번째 축에 따라 두 번째 축을 업데이트하는 콜백으로 등록했습니다. 이는 서로 다른 단위를 가진 두 개의 데이터 집합을 플로팅하려는 경우 유용합니다.