들어가며..
1편에서 mplfinance, plotly 차트 라이브러리를 사용하여 캔들차트로 표현해 보았다. 본 편에서는 Plotly 라이브러리를 사용하여 일 시세 + 거래량 차트를 표현해 본다.
1편Python - 주식차트 만들기 1편, 캔들차트 만들기 ( mplfinance, Ploty )
라이브러리 설치 ( 1편에서 설치 하였다면 skip )
pip install pandas-datareader # 주식 데이터 조회
pip install plotly # 차트 라이브러리
주식 데이터 조회 ( 삼성전자 )
import plotly.graph_objects as go
import plotly.subplots as ms
import pandas_datareader as web
df = web.naver.NaverDailyReader('005930', start='20200101' , end='20201231').read()
df = df.astype(int) # Object 데이터를 int로 변환
캔들차트와 거래량을 표시할 바(Bar)차트 객체를 생성한다.
# 캔들 차트 객체 생성
candle = go.Candlestick(
x=df.index,
open=df['Open'],
high=df['High'],
low=df['Low'],
close=df['Close'],
increasing_line_color = 'red', # 상승봉 스타일링
decreasing_line_color = 'blue' # 하락봉 스타일링
)
# 바 차트(거래량) 객체 생성
volume_bar = go.Bar(x=df.index, y=df['Volume'])
Figure 설정
fig = ms.make_subplots(rows=2, cols=1, shared_xaxes=True, vertical_spacing=0.02)
두개의 행을 갖는 Figure 객체를 생성한다. shared_xaxes 함수는 Figure에 설정된 차트들의 x축을 공유하여 rangeslider를 사용하여 같이 움직이게 할 수 있다.
fig.add_trace(candle, row=1, col=1)
fig.add_trace(volume_bar, row=2, col=1)
첫번째 행에 캔들차트를 추가 하고 그 다음으로 거래량차트를 추가한다.
fig.update_layout(
title='Samsung stock price',
yaxis1_title='Stock Price',
yaxis2_title='Volume',
xaxis2_title='periods',
xaxis1_rangeslider_visible=False,
xaxis2_rangeslider_visible=True,
)
xaxis1_rangeslider_visible=False 캔들차는 rangeslider를 제거하고 xaxis2_rangeslider_visible=True 거래량 차트에 rangeslider를 셋트한다.
차트를 출력한다.
fig.show()
반응형
'python > 주식' 카테고리의 다른 글
1. Python 주식 일간 변동률 계산 - ( 삼성전자 vs 애플 시각화 비교 ) (2) | 2021.02.16 |
---|---|
3. Python - Plotly 캔들차트 + 이동평균선 ( feat. rolling API 사용법 ) (4) | 2021.01.27 |
1. Python - 캔들차트(candlestick) + 스타일링 ( mplfinance, Plotly ) (4) | 2021.01.20 |
전자공시 Open API 활용(6), pandas 기초 - 재무제표 json 데이터를 pandas DataFrame으로 변환 (4) | 2020.03.29 |
전자공시 Open API 활용(5), 기업 재무제표 조회 API ( 분기/반기/사업보고서 - 재무상태표, 손익계산서 ) (4) | 2020.03.28 |