서로 다른 스케일의 플롯 생성

Beginner

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

소개

이 랩에서는 Matplotlib 을 사용하여 Python 에서 다양한 스케일의 플롯을 만드는 방법을 배우게 됩니다. 특히, 서로 다른 왼쪽 및 오른쪽 스케일을 가진 두 개의 플롯을 동일한 축에 만드는 방법을 배우게 됩니다.

VM 팁

VM 시작이 완료되면, 왼쪽 상단을 클릭하여 Notebook 탭으로 전환하여 실습을 위해 Jupyter Notebook에 접속하십시오.

때로는 Jupyter Notebook 이 로딩을 완료하는 데 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사는 자동화될 수 없습니다.

학습 중에 문제가 발생하면 언제든지 Labby 에게 문의하십시오. 세션 후 피드백을 제공해주시면 문제를 신속하게 해결해 드리겠습니다.

필요한 라이브러리 임포트

시작하기 전에 필요한 라이브러리를 임포트하겠습니다. 이 튜토리얼에서는 Matplotlib 과 NumPy 를 사용합니다.

import matplotlib.pyplot as plt
import numpy as np

가짜 데이터 생성

다음으로, 플롯에 사용할 가짜 데이터를 생성합니다. numpy.arange를 사용하여 0.01 에서 10.0 까지 0.01 간격으로 값을 갖는 배열을 생성합니다. 그런 다음 numpy.expnumpy.sin을 사용하여 두 개의 데이터 세트를 생성합니다.

## Create some mock data
t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)

플롯 생성

이제 데이터를 갖추었으니 플롯을 생성할 수 있습니다. matplotlib.pyplot.subplots()를 사용하여 axes 객체를 생성하는 것으로 시작합니다. 그런 다음 이 axes 객체에 첫 번째 데이터 세트를 플롯하고 레이블 색상을 빨간색으로 설정합니다.

fig, ax1 = plt.subplots()

color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)

다음으로, ax1.twinx() 메서드를 사용하여 첫 번째 axes 객체와 동일한 x 축을 공유하는 두 번째 axes 객체를 인스턴스화합니다. 그런 다음 이 새로운 axes 객체에 두 번째 데이터 세트를 플롯하고 레이블 색상을 파란색으로 설정합니다.

ax2 = ax1.twinx()

color = 'tab:blue'
ax2.set_ylabel('sin', color=color)
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)

마지막으로, fig.tight_layout() 메서드를 사용하여 플롯의 레이아웃을 조정하고 matplotlib.pyplot.show()를 사용하여 표시합니다.

fig.tight_layout()
plt.show()

플롯 검토

생성된 플롯을 잠시 검토해 보십시오. 두 데이터 세트가 y 축에서 서로 다른 스케일을 갖는 것을 확인하십시오. 첫 번째 데이터 세트는 빨간색으로 플롯되고 플롯의 왼쪽에 스케일이 있는 반면, 두 번째 데이터 세트는 파란색으로 플롯되고 플롯의 오른쪽에 스케일이 있습니다.

요약

축하합니다! Matplotlib 을 사용하여 Python 에서 서로 다른 스케일의 플롯을 생성하는 방법을 배웠습니다. 특히, 동일한 x 축을 공유하는 두 개의 서로 다른 axes 를 사용하여 서로 다른 왼쪽 및 오른쪽 스케일을 가진 두 개의 플롯을 동일한 axes 에 생성하는 방법을 배웠습니다. 두 axes 가 독립적이므로 원하는 대로 별도의 matplotlib.ticker 포매터 (formatter) 와 로케이터 (locator) 를 사용할 수 있습니다.