Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib에서 두 개의 Y축(서로 다른 단위)으로 하나의 데이터 플롯하는 방법

Matplotlib에서 하나의 데이터를 두 개의 Y축(서로 다른 단위)으로 표현하려면 twinx() 메서드를 활용하면 됩니다. 이 기법은 속도와 가속도처럼 단위가 다른 두 값을 하나의 그래프에 함께 시각화할 때 특히 유용합니다.

단계별 진행 과정

  • 그림 크기(figure size)를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
  • numpy를 사용하여 속도(speed)가속도(acceleration) 데이터 포인트를 생성합니다.
  • 현재 그림(figure)에 서브플롯을 추가합니다.
  • plot() 메서드를 사용해 속도 데이터 포인트를 그립니다.
  • twinx() 메서드로 X축을 공유하는 쌍둥이 축(twin Axes)을 생성합니다.
  • plot() 메서드를 사용해 가속도 데이터 포인트를 그립니다.
  • 그래프에 범례(legend)를 배치합니다.
  • show() 메서드를 호출하여 그래프를 화면에 표시합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

speed = np.array([3, 1, 2, 0, 5])
acceleration = np.array([6, 5, 7, 1, 5])

ax1 = plt.subplot()
l1, = ax1.plot(speed, color='red')
ax2 = ax1.twinx()
l2, = ax2.plot(acceleration, color='orange')

plt.legend([l1, l2], ["speed", "acceleration"])

plt.show()

핵심 포인트

twinx()는 기존 축과 X축을 공유하면서 오른쪽에 새로운 Y축을 추가하는 역할을 합니다. 덕분에 왼쪽 Y축에는 속도 단위를, 오른쪽 Y축에는 가속도 단위를 각각 표시할 수 있으며, 두 데이터가 동일한 X축 기준으로 나란히 비교됩니다. 또한 legend()에 선 객체(l1, l2)와 레이블을 함께 전달하면 두 축의 데이터를 하나의 범례로 깔끔하게 정리할 수 있습니다.

실행 결과

코드를 실행하면 빨간색 선(속도)과 주황색 선(가속도)이 하나의 그래프에 함께 그려지며, 좌우 양쪽에 서로 다른 Y축 눈금이 표시되는 것을 확인할 수 있습니다.

Matplotlib에서 두 개의 Y축(서로 다른 단위)으로 하나의 데이터 플롯하는 방법