Matplotlib 주가그래프 그리기

Sam (토론 | 기여)님의 2022년 8월 10일 (수) 23:08 판 (→‎개요)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

개요편집

matplotlib과 mpl_finance를 함께 사용한다.

과정 설명 방법
영역 설정 복잡한 차트를 그려야 할 땐 subplot2grid를 이용한다.

subplot2grid의 첫번째엔 전체 몇등분 할지, 2번째는 시작할 지점, rowspan, colspan은 차지할 지점을 의미한다.

import matplotlib.pyplot as plt
import mpl_finance

plt.rcParams["figure.figsize"] = [11.7, 8.3]  # 도화지 설정.
chart = plt.subplot2grid((4,4), (0,0), rowspan=3, colspan=4)
volume_chart = plt.subplot2grid((4,4), (3,0), rowspan=1, colspan=4, sharex=top_axes)
캔들차트 그리기 chart에 그려줌을 지정한다. res는 결과를 담고 있는 dataframe.


candlestick2_ohlc 이 멍청이는 index가 시간데이터면 인지를 못한다.

df = df.astype({'time': 'str'})로 데이터형을 문자형으로 바꾸어주어야 한다.

mpl_finance.candlestick2_ohlc(chart, res['start'], res['high'], res['low'], res['close'], width=0.5,
                                      colorup='r', colordown='b')
거래량 그리기
#---거래량 그리기
volume_chart.get_yaxis().get_major_formatter().set_scientific(False)  # 거래량 값을 그대로 표현하기 위한 옵션
color_fuc = lambda x: 'r' if x >= 0 else 'b'  # 조건을 기입한다. x가 0보다 크면 r, 작으면 b를 반환.
color_list = list(res['volume'].diff().fillna(0).apply(color_fuc))  # diff함수로 이전 값과 비교하여 조건 반영.
volume_chart.bar(res.index, res['volume'], width=0.5, align='center', color=color_list)  # color_list를 따라 색칠.