차밍이
[Python] Plotly를 활용한 주식 차트 그리기 / 캔들스틱 그래프 그리기 / CandleStick Chart - 파이썬 주식투자(6) 본문
[Python] Plotly를 활용한 주식 차트 그리기 / 캔들스틱 그래프 그리기 / CandleStick Chart - 파이썬 주식투자(6)
2021. 1. 22. 16:26목차
이전 글 까지는 matplotlib을 사용해서 그래프를 그렸다면 이번에는 plotly 라이브러리를 활용해서 주식 그래프를 그려보겠습니다.
데이터를 가져오는 부분은 이전의 글을 통해서 확인하실 수 있습니다.
[Python] pandas_datareader 코스피 코스닥 지수 데이터 가져오기 // 파이썬 주식투자(1)
[Python] KOSPI 이동평균선, 주가 이동평균선 구하기 // 파이썬 주식투자(2)
[Python] 캔들 스틱 차트 그리기, Candlestick Chart 그리기 - 파이썬 주식투자(3)
1. Plotly 라이브러리 설치하기
anaconda promplt 혹은 명령 프롬프트에서 간단하게 설치하실 수 있습니다.
pip install plotly
2. 삼성전자 데이터 가져오기
항상 KOSPI 데이터만 가지고 했으니, 이번에는 삼성전자 데이터를 사용해서 진행하겠습니다.
데이터 가져오는 부분 이전 글 참고 : [Python] pandas_datareader 코스피 코스닥 지수 데이터 가져오기 // 파이썬 주식투자(1)
import plotly.graph_objects as go
from plotly.subplots import make_subplots
from pandas_datareader import data
from datetime import datetime
import pandas as pd
# 데이터를 가져올 날짜 설정
start_date = datetime(2013,1,3)
end_date = datetime(2021,1,22)
# 야후에서 삼성전자 데이터 가져오기
samsung = data.get_data_yahoo("005930.ks", start_date, end_date)
삼성전자의 데이터를 가져오기위해 삼성전자의 주식 번호인 "005930"을 넣었습니다.
그리고 ".ks"를 붙여서 코스피라는 것을 표기해줍니다.
야후 파이낸스에서는 005930.kr
가 삼성전자
를 의미하는 ticker가 되겠습니다.
3. Plotly를 사용해 캔들 차트 그리기
plotly에 있는 기본 캔들스틱 그래프를 그리는 방법을 활용하였습니다.
from plotly.subplots import make_subplots
import plotly.graph_objects as go
samsung = samsung.reset_index() # Date index를 Column으로 보내주기 위함
# plotly 캔들스틱 그래프 그리기
stock_name = '삼성전자'
fig = go.Figure(data=[go.Candlestick(x=samsung['Date'],
open=samsung['Open'],
high=samsung['High'],
low=samsung['Low'],
close=samsung['Close'])])
fig.show()
plotly를 통해서 캔들 차트를 그리면 좋은 점은 확대해서 볼 수 있다는 것입니다.
matplotlib과 다르게 sliding을 통해서 원하는 부분을 더 자세하게 볼 수 있습니다.
4. 쉬는 날 제거하기
자세하게 보면 중간 중간 쉬는 날들이 있고 그 칸이 비어있는 것을 볼 수 있습니다.
datetime
형식으로 x축 값이 들어가기 때문에 plotly
에서 자동으로 날짜를 모두 그리고 그중 데이터가 있는 부분에만 그래프를 그려줍니다.
이러한 비어있는 공간을 없애기 위한 방법을 알아보겠습니다.
일단, datetime
형식을 string
형식으로 바꿔서 object
가 되겠죠. 그래서 순서대로 그래프를 그리는 방식으로 진행해주면 됩니다.
from plotly.subplots import make_subplots
import plotly.graph_objects as go
samsung = samsung.reset_index()
samsung['Date'] = samsung['Date'].apply(lambda x : datetime.strftime(x, '%Y-%m-%d')) # Datetime to str
stock_name = '삼성전자'
fig = go.Figure(data=[go.Candlestick(x=samsung['Date'],
open=samsung['Open'],
high=samsung['High'],
low=samsung['Low'],
close=samsung['Close'])])
# x축 type을 카테고리 형으로 설정, 순서를 오름차순으로 날짜순서가 되도록 설정
fig.layout = dict(title=stock_name,
xaxis = dict(type="category",
categoryorder='category ascending'))
fig.update_xaxes(nticks=5)
fig.show()
빈 공간 없이 모두 그래프가 그려진 것을 확인할 수 있습니다.
지금까지 plotly를 활용해서 삼성전자 주가 데이터를 캔들스틱 차트로 그려보았습니다.
'파이썬 > 데이터 시각화' 카테고리의 다른 글
[Python] Plotly : subplot 만들기의 모든것 - subtitle, type 설정 포함 (0) | 2022.07.24 |
---|---|
[Python] Plotly legend(범례) 의 모든 것 - 순서, 위치, 폰트 등 (0) | 2022.07.23 |
[Python] Plotly 자주 사용하는 Layout 설정 - title, 축 label, font, subtitle, position 등 (4) | 2022.06.19 |
[Python] Plotly 축 반전, x축 y축 반전 뒤집기 (2) | 2022.02.14 |
[Python] Plotly 그래프 사용법 - Line Plot (0) | 2021.01.28 |
[Python] Plotly 그래프 사용법 - Scatter Plot (0) | 2021.01.27 |
[Python] cufflinks, QunatFig, Plotly 주식 그래프 예쁘고 편하게 그리기 - 파이썬 주식투자(7) (6) | 2021.01.23 |
Plotly를 사용한 파이썬 시각화 using 코로나 데이터셋 (0) | 2020.04.29 |