Matplotlib 고급

twinx로 두 개의 y축

ax.twinx로 만든 두 번째 y축을 써서 단위가 다른 두 값을 한 차트에 그립니다.

소개

밀리미터 단위의 강수량과 도 단위의 기온은 같은 눈금을 쓸 수 없습니다. 한 축에 그리면 둘 중 하나가 평평해 보입니다. ax.twinx는 x축을 공유하면서 오른쪽에 자신만의 y축을 가진 두 번째 Axes를 만듭니다.

ax1은 왼쪽 y축으로 강수량 막대를 그립니다. ax2 = ax1.twinx()는 월을 공유하지만 오른쪽에 기온용 새 y축을 가집니다. 각 축 레이블을 데이터와 같은 색으로 칠하면 어느 축이 어느 계열의 것인지 알 수 있습니다. 두 축은 아껴 쓰세요. 두 계열의 비교를 잘못 읽기 쉽습니다.

인터랙티브 시각화

두 번째 y축을 끄면 왜 필요한지 알 수 있습니다. 하나의 눈금을 같이 쓰면 기온 선이 아래쪽에 납작하게 눌립니다.

실행 가능한 Matplotlib 예제

Matplotlib
코드 실행 →
main.py
import matplotlib.pyplot as plt

months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
temperature = [3, 5, 9, 14, 18, 22, 25, 24, 20, 14, 8, 4]
rain = [60, 50, 55, 45, 60, 70, 80, 85, 60, 75, 80, 70]

fig, ax1 = plt.subplots(figsize=(7, 4))
ax1.bar(months, rain, color="tab:blue", alpha=0.4)
ax1.set_ylabel("Rain (mm)", color="tab:blue")

ax2 = ax1.twinx()
ax2.plot(months, temperature, color="tab:red", marker="o")
ax2.set_ylabel("Temperature (°C)", color="tab:red")
ax1.set_title("Climate in one chart")
plt.show()
이 예제의 실행 버튼 만들기 이 코드가 그리는 차트
twinx로 두 개의 y축