파이썬 이중 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축의 범위를 다르게 지정함으로써 그래프의 패턴도 바뀐 모습을 볼 수 있었습니다.
더 상세한 다중 플롯 그래프를 꾸미는 방법에 대해서는 아래에 첨부한 이전 포스팅을 참고하시면
도움을 받으실 수 있을 것으로 생각됩니다.
'Python > Matplotlib' 카테고리의 다른 글
[Matplotlib] 그래프 스타일 설정 및 초기화 방법 (1) | 2022.02.22 |
---|---|
[Matplotlib] 파이썬 워드 클라우드(Word Cloud) 시각화 예제 (1) | 2022.02.15 |
[Matplotlib] 주피터 노트북 그래프 한글 깨짐 해결법 (0) | 2022.02.14 |