Matplotlib 를 이용한 다중 Y 축 플롯

Beginner

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

소개

데이터 시각화에서, 서로 다른 측정 단위를 가진 여러 변수를 동일한 그래프에 플롯해야 하는 경우가 많습니다. 이를 달성하는 일반적인 방법 중 하나는 여러 y 축을 사용하는 것입니다. 각 y 축은 서로 다른 변수에 해당합니다. 이 랩에서는 Matplotlib 를 사용하여 여러 y 축이 있는 그래프를 만드는 방법을 배웁니다.

VM 팁

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

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

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

필요한 라이브러리 가져오기

필요한 라이브러리인 Matplotlib 와 NumPy 를 가져오는 것으로 시작합니다. Matplotlib 는 데이터 시각화 라이브러리이고, NumPy 는 Python 에서 수치 계산을 위한 라이브러리입니다.

import matplotlib.pyplot as plt
import numpy as np

figure 와 axes 객체 생성

Matplotlib 에서 단일 플롯을 나타내는 figure 와 axes 객체를 생성합니다.

fig, ax = plt.subplots()

twin y-axis 추가

twinx 메서드를 사용하여 플롯에 twin y-axis 를 추가합니다. 이렇게 하면 플롯의 오른쪽에 새로운 y-axis 가 생성됩니다.

twin1 = ax.twinx()

twin y-axis 위치 설정

set_position 메서드를 사용하여 twin y-axis 의 위치를 설정합니다. 이렇게 하면 twin y-axis 가 원래 y-axis 의 오른쪽에 위치하게 됩니다.

twin1.spines.right.set_position(("axes", 1.2))

플롯에 데이터 추가

plot 메서드를 사용하여 플롯에 데이터를 추가합니다. 각기 다른 y-axis 를 사용하는 세 개의 선을 플롯에 추가합니다.

p1, = ax.plot([0, 1, 2], [0, 1, 2], "C0", label="Density")
p2, = twin1.plot([0, 1, 2], [0, 3, 2], "C1", label="Temperature")
p3, = twin2.plot([0, 1, 2], [50, 30, 15], "C2", label="Velocity")

축의 제한 및 레이블 설정

set 메서드를 사용하여 각 y-axis 의 제한과 레이블을 설정합니다. 또한 set_color 메서드를 사용하여 레이블의 색상을 선의 색상과 일치하도록 설정합니다.

ax.set(xlim=(0, 2), ylim=(0, 2), xlabel="Distance", ylabel="Density")
twin1.set(ylim=(0, 4), ylabel="Temperature")
twin2.set(ylim=(1, 65), ylabel="Velocity")

ax.yaxis.label.set_color(p1.get_color())
twin1.yaxis.label.set_color(p2.get_color())
twin2.yaxis.label.set_color(p3.get_color())

눈금 색상 설정

각 y-axis 의 눈금 색상을 레이블의 색상과 일치하도록 설정합니다.

ax.tick_params(axis='y', colors=p1.get_color())
twin1.tick_params(axis='y', colors=p2.get_color())
twin2.tick_params(axis='y', colors=p3.get_color())

플롯에 범례 추가

legend 메서드를 사용하여 플롯에 범례를 추가합니다. handles 매개변수로 선 객체 (line objects) 의 목록을 전달합니다.

ax.legend(handles=[p1, p2, p3])

플롯 표시

show 메서드를 사용하여 플롯을 표시합니다.

plt.show()

요약

이 랩에서는 Matplotlib 을 사용하여 여러 y 축을 가진 그래프를 만드는 방법을 배웠습니다. Figure 와 axes 객체를 생성하고, twin y-axis 를 추가하고, twin y-axis 의 위치를 설정하고, 플롯에 데이터를 추가하고, 축의 제한과 레이블을 설정하고, 눈금 색상을 설정하고, 플롯에 범례를 추가하고, 플롯을 표시했습니다. 이 기술은 서로 다른 측정 단위를 가진 변수를 동일한 그래프에서 비교할 때 유용할 수 있습니다.