소개
이 튜토리얼에서는 Matplotlib 을 사용하여 두 개의 y 축을 가진 플롯을 만드는 방법을 배웁니다. 이 플롯은 서로 다른 측정 단위를 가진 두 개의 데이터 세트를 서로 다른 스케일로 표시합니다. 이러한 유형의 플롯은 직접 비교할 수 없는 변수 간의 관계를 시각화하기 위해 과학 연구에서 일반적으로 사용됩니다.
VM 팁
VM 시작이 완료되면 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 액세스하십시오.
때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한 사항으로 인해 작업의 유효성 검사는 자동화할 수 없습니다.
학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.
라이브러리 임포트
먼저, 필요한 라이브러리를 임포트해야 합니다. 플롯을 생성하기 위해 Matplotlib 과 parasite_axes 모듈을 사용합니다.
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms
from mpl_toolkits.axes_grid1.parasite_axes import HostAxes
데이터 정의
다음으로, 플롯할 데이터를 정의해야 합니다. 이 예제에서는 이름, 각 고유 운동, 각 고유 운동 오차 및 거리를 포함하는 네 개의 변수를 가진 관측치 세트가 있습니다. 각 고유 운동을 선형 속도로 변환하고 관측치의 FWHM (full width at half maximum, 반 최대 폭) 에 대해 플롯합니다.
obs = [["01_S1", 3.88, 0.14, 1970, 63],
["01_S4", 5.6, 0.82, 1622, 150],
["02_S1", 2.4, 0.54, 1570, 40],
["03_S1", 4.1, 0.62, 2380, 170]]
## 각 고유 운동에서 선형 속도로의 변환 계수
pm_to_kms = 1./206265.*2300*3.085e18/3.15e7/1.e5
플롯 생성
이제 parasite_axes 모듈의 HostAxes 및 twin() 함수를 사용하여 플롯을 생성합니다. HostAxes 는 메인 플롯을 생성하는 데 사용되며, twin() 은 보조 y 축을 생성하는 데 사용됩니다.
fig = plt.figure()
## HostAxes 객체 생성
ax_kms = fig.add_subplot(axes_class=HostAxes, aspect=1)
## 변환된 좌표를 사용하여 보조 y 축 생성
aux_trans = mtransforms.Affine2D().scale(pm_to_kms, 1.)
ax_pm = ax_kms.twin(aux_trans)
## 데이터 플롯
for n, ds, dse, w, we in obs:
time = ((2007 + (10. + 4/30.)/12) - 1988.5)
v = ds / time * pm_to_kms
ve = dse / time * pm_to_kms
ax_kms.errorbar([v], [w], xerr=[ve], yerr=[we], color="k")
## 축 레이블 설정
ax_kms.axis["bottom"].set_label("Linear velocity at 2.3 kpc [km/s]")
ax_kms.axis["left"].set_label("FWHM [km/s]")
ax_pm.axis["top"].set_label(r"Proper Motion [$''$/yr]")
## 보조 y 축의 눈금 레이블 숨기기
ax_pm.axis["right"].major_ticklabels.set_visible(False)
## 플롯 제한 설정
ax_kms.set_xlim(950, 3700)
ax_kms.set_ylim(950, 3100)
플롯 표시
마지막으로, plt.show() 함수를 사용하여 플롯을 표시합니다.
plt.show()
요약
이 튜토리얼에서는 Matplotlib 을 사용하여 두 개의 y 축이 있는 플롯을 만드는 방법을 배웠습니다. 데이터를 정의하고, 플롯을 생성하고, 플롯을 표시하는 방법을 배웠습니다. 이러한 유형의 플롯은 직접 비교할 수 없는 변수 간의 관계를 시각화하는 데 유용합니다.