반응형

파이썬 Matplotlib을 이용한 데이터 시각화 프로그래밍15 - 서브플롯 활용하기



이번에는 서브플롯을 활용하여 한 화면에 여러가지 그래프를 보는 방법에 대해 살펴봅니다.

여태까지 다룬 소스코드는 주가트렌드, 주가캔들 그리고 미국 출생아수에 대한 그래프를 출력하는 것이었죠.

이들 세 가지 그래프를 서브플롯을 이용해 그려봅니다.


서브플롯은 아래의 코드로 3개로 구분합니다.


>>> ax1 = plt.subplot2grid((2, 2), (0, 0))

>>> ax2 = plt.subplot2grid((2, 2), (0, 1))

>>> ax3 = plt.subplot2gird((2, 2), (1, 0), colspan=2)


ax1에는 주가트렌드 그래프를, ax2에는 주가캔들 그래프를, ax3에는 미국 출생아수 그래프를 출력하도록 이전 코드를 활용해서 그려봅니다.


14편까지 충실하게 따라왔다면 아래 코드는 별로 설명할 것이 없습니다.





결과는 아래와 같습니다.




이 예에서는 미국 출생아수 그래프는 나머지 2개와 관련이 없는 것이지만, 이런 유형의 데이터 시각화는 서로 상관이 있는 것들을 다른 각도에서 살펴보기 위해 많이 활용됩니다.


자, 그러면 연관성이 있는 주가트렌드와 주가캔들을 서브플롯을 활용하여 한눈에 보이도록 해봅니다.

x축의 값은 날짜로 동일하며, y축의 값은 주가이므로 동일한 스케일로 그려주면 될 것 같습니다.

이를 위해서 x축을 공유하여 서브플롯을 정의합니다. ax1에는 주가트렌드를, ax2에는 주가캔들을 그릴 겁니다.

>>> ax1 = plt.subplot2grid((2,1), (0,0))

>>> ax2 = plt.subplot2grid((2,1), (1,0), sharex=ax1)



그리고 y축의 스케일을 같게 두기 위해 주가트렌드 그래프 및 주가캔들을 그린 후 아래의 코드를 추가합니다.


주가트렌드 그래프를 그린 후 추가할 코드


>>> ax1.yaxis.set_major_locator(mticker.MaxNLocator(nbins=5, prune='lower'))



주가캔들을 그린 후 추가할 코드


>>> ax2.yaxis.set_major_locator(mticker.MaxNLocator(nbins=5, prune='upper'))


마지막으로 plt.show()를 호출하기 전에 아래 코드를 삽입하여 ax1의 x축에 표시되는 눈금 라벨을 보이지 않게 합니다.


>>> plt.setp(ax1.get_xticklabels(), visible=False)



수정된 drawStockTrend() 함수 부분은 아래와 같습니다.




코드 실행 결과는 아래와 같습니다.





반응형

+ Recent posts