Python/Matplotlib

[Matplotlib] 파이썬 y축 양쪽으로 2개 설정하기

jimmy_AI 2022. 2. 16. 22:11
반응형

파이썬 이중 y축 그리는 방법

안녕하세요. 이번 글에서는 파이썬 matplotlib에서 subplot의 속성을 이용하여

서로 다른 y축을 가지는 이중 축 그래프를 그리는 방법에 대해서 살펴보도록 하겠습니다.

 

 

단일 y축 그래프 예시

먼저, 이중 축을 설정하지 않고 단일 축으로 두 그래프를 그린 간단한 예시를 보겠습니다.

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]

y1 = [12, 13, 9, 14]
y2 = [1000, 750, 1100, 850]

plt.plot(x, y1, color = 'red', alpha = 0.5)
plt.plot(x, y2, color = 'blue', alpha = 0.5)
plt.show()

두 그래프의 y축 값을 나타내는 y1, y2의 값들의 범위가

y1은 9 ~ 14 정도로 10 근방에 있음에 비하여,

y2는 750 ~ 1100으로 1000 근처에서 나타나고 있습니다.

 

그러나, 이 두 그래프를 하나의 y축을 공유하여 그리려다 보니 위처럼 y1의 특징은

거의 무시되는 것처럼 그려지고 있는 것을 볼 수 있습니다.

 

 

이중 y축 설정 방법

위와 같은 경우, 두 그래프를 한 plot에 효과적으로 그리기 위해서는

두 그래프가 다른 스케일의 y축을 가지는 것이 유용할 수 있습니다.

 

이는 다중 플롯을 그리는 방법을 이용하면 쉽게 구현이 가능한데,

아래의 예제 코드를 살펴보겠습니다.

# 다중 플롯을 지정 : ax1은 y1에 대한 그래프
fig, ax1 = plt.subplots()
ax1.plot(x, y1, color = 'red', alpha = 0.5)

# ax2는 y2에 대한 그래프, twinx로 x축을 공유
ax2 = ax1.twinx()
ax2.plot(x, y2, color = 'blue', alpha = 0.5)
plt.show()

ax1, ax2의 subplot을 두 그래프에 따로 지정하고, twinx 속성으로

x축을 공유하여 같은 그래프 내에 표현한 결과가 위에 나타났습니다.

 

이로써 왼쪽의 y축은 y1의 범위에 맞게, 오른쪽의 y축은 y2의 범위를 따라서

그래프가 그려진 결과를 살펴볼 수 있었습니다.

반응형

이중 y축 꾸미기 방법

subplot을 꾸미는 방법과 동일하게 이중 축 그래프의 속성 설정이 가능합니다.

예를 들어, 위의 그래프에서 y축의 라벨을 표시하고 범위를 변경해보도록 하겠습니다.

fig, ax1 = plt.subplots()
ax1.plot(x, y1, color = 'red', alpha = 0.5)
# y축 라벨 및 범위 지정
ax1.set_ylabel('y1', color = 'red', rotation = 0)
ax1.set_ylim(0, 15)

ax2 = ax1.twinx()
ax2.plot(x, y2, color = 'blue', alpha = 0.5)
# y축 라벨 및 범위 지정
ax2.set_ylabel('y2', color = 'blue', rotation = 0)
ax2.set_ylim(0, 2500)

plt.show()

양쪽 y축 라벨의 색상으로 그래프 구분이 용이해졌습니다.

또한, y축의 범위를 다르게 지정함으로써 그래프의 패턴도 바뀐 모습을 볼 수 있었습니다.

 

더 상세한 다중 플롯 그래프를 꾸미는 방법에 대해서는 아래에 첨부한 이전 포스팅을 참고하시면

도움을 받으실 수 있을 것으로 생각됩니다.

 

[Matplotlib] 파이썬 그래프 여러개 다중 플롯(subplot) 초간단 설정 방법

파이썬 plt 그림 여러개 간단하게 설정하기 : plt.subplots() 안녕하세요. 이번 포스팅에서는 파이썬 matplotlib 라이브러리에서 그래프 여러개를 한 화면에 동시에 나타내고, 각 그래프의 세부 사항들

jimmy-ai.tistory.com