x-axis를 공유하지만 y-axis는 공유하지 않는 fig

x-axis를 공유하지만 y-axis는 공유하지 않는 fig

  • x-axis는 공유하지만, y-axis는 공유하지 않도록 그림을 그리고 싶을때가 있습니다. 이 때 twinx를 통해 이를 가능하게 해줄 수 있습니다. 매우 간단하지만, 저는 자주 까먹기 때문에 제가 찾아보려고 정리해두었습니다 하하하핫.

do it

  • 중요한 것은, ytick, ylabel을 색깔을 사용하여 다른 것을 확실하게 보여주는 것이 필요합니다. 저도 ytick, ylabel과 line의 color를 동일하게 적용하여, 그래프 상에서 시각적으로 차이가 명확하게 드러나도록 하였구요.
  • 그 외에는 코드 상에 큰 어려움이 없는 것 같아서 그냥 넘어가겠습니다.
import numpy as np 
import matplotlib.pyplot as plt

x = np.linspace(1, 10, 100)
y1 = np.exp(x)
y2 = np.log(x)

plt.figure(figsize=(12, 4))
ax1, ax2 = plt.gca(), plt.gca().twinx() # 원래 주어진 axis, x를 공유하는 쌍둥이 axis 

ax1.plot(x, y1, color='blue', linestyle='-')
ax1.set_ylabel('y1: np.exp', color='blue', fontsize=15)
ax1.tick_params('y', colors='blue')

ax2.plot(x, y2, color='red', linestyle='--')
ax2.set_ylabel('y2: np.log', color='red', fontsize=15)
ax2.tick_params('y', colors='red')

ax1.set_xlabel("shared x", fontsize=20)
plt.tight_layout()
plt.savefig('../../assets/images/markdown_img/180618_1735_twinx.svg')
plt.show()

wrap-up

  • twinx를 많이 사용해도, 그러니까 ax1, …ax10까지 여러 쌍둥이를 만들어도 되기는 하고, 시각적으로 문제는 없습니다만, 보는 게 불편해집니다. 만약 여러 개를 그리고 싶으시면, subplots이 훨씬 좋을 것 같아요.

reference

댓글남기기