본문 바로가기

Python

ohlcv 데이터 plotlib 시각화 기초

아래와 같은 ohlcv 데이터를 선그래프로 간단히 도시하는 샘플 코드

time open high low close volumn
2021-01-01 00:00:00 28923.63 29017.50 28913.12 28975.65 182.889878
2021-01-01 00:05:00 28975.65 28979.53 28846.28 28858.94 214.568104
2021-01-01 00:10:00 28858.94 28883.20 28690.17 28752.80 442.619587
2021-01-01 00:15:00 28752.80 28852.48 28720.91 28820.72 174.839779
2021-01-01 00:20:00 28822.17 28846.46 28744.09 28846.46 161.316784
import matplotlib.pyplot as plt
# DataFrame 기본 그래프 전시
df.close.plot() # df는 위 데이터의 DataFrame 변수

BTC 등락그래프

일단 날짜 컬럼을 인덱스 처리

# time 컬럼의 인덱스 처리 set_index()
df.set_index(['time'], inplace=True)

 

그래프의 크기, 타이틀, 색, 범례, 축라벨 설정

# 그래프 크기 설정
plt.style.use('bmh')
plt.figure(figsize=(20, 3), dpi=250) #figsize 그래프 크기, dpi 해상도
# 그래프 타이틀
plt.title("BTC Close Graph")
# 그래프 도시(라인색, 범례설정)
plt.plot(df.close, color='green', label="Close")
plt.legend() # 라벨 이후에 legend() 호출
# 축 라벨 텍스트 설정
plt.xlabel('Date')
plt.ylabel('USD')
plt.show()

subplot()을 사용하여 여러 그래프를 표현

# subplot 사용 plt.subplot(row, column, index)
plt.figure(figsize=(10, 4))
plt.subplot(211) # 211 => 행:2, 열:1, 순서:1
plt.plot(df.close)
plt.subplot(212) # 212 => 행:2, 열:1, 순서:2
plt.plot(df.high)
plt.show()

한 plot 안에 두가지 그래프를 도시하기

import talib.abstract as ta

# 이동평균값(SMA) 생산
df['SMA'] = ta.SMA(df, timeperiod=12*24*7) 
plt.figure(figsize=(20,3))
# 종가 라인
ax_close = df.close.plot.line() 
# 이동평균 라인
ax_sam = df.SMA.plot.line(ax = ax_close)
ax_sam.legend()