본문 바로가기

프로그래밍/PyQt5 GUI

62. 주가 챠트

챠트와 관련된 라이브러리 설치하기

pip install -U matplotlib

pip install -U mpl_finance

pip install -U mplfinance

import datetime
import numpy as np
import FinanceDataReader as fdr
import matplotlib as mpl

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
import matplotlib.gridspec as gridspec
# import mplfinance as mpf

# 셀트리온, 2020년
df_068270 = fdr.DataReader("068270", "2020")
df_068270 = df_068270.loc[:, ["Open", "High", "Low", "Close", "Volume"]]      # 시가, 고가, 저가, 종가, 거래량

# mc = mpf.make_marketcolors(up="r", down="b")
# s = mpf.make_mpf_style(base_mpf_style='starsandstripes', marketcolors=mc)
# mpf.plot(fdf, type='candle', style=s, title="KKPC")

# mpl.rcParams['axes.unicode_minus'] = False  # 그래프에서 마이너스 폰트 깨지는 문제 해결
# print ('버전: ', mpl.__version__)
# print ('설치 위치: ', mpl.__file__)
# print ('설정 위치: ', mpl.get_configdir())
# print ('캐시 위치: ', mpl.get_cachedir())

# font_list = fm.findSystemFonts(fontpaths=None, fontext='ttf')
# print(len(font_list))                       # 폰트 전체 갯수
# font_list_window = fm.win32InstalledFonts()
# print(len(font_list_window))                # Window의 설치된 폰트 갯수

# for font in font_list[:len(font_list_window)]:
#     print(font)
# f = [f.name for f in fm.fontManager.ttflist]

# print(f)

# print([(f.name, f.fname) for f in fm.fontManager.ttflist if 'Malgun Gothic' in f.name])

path = 'C:\\Windows\\Fonts\\malgun.ttf'
fontprop = fm.FontProperties(fname=path, size=12)


# fig = plt.figure(figsize=(8, 5))
# fig.set_facecolor('w')

gs = gridspec.GridSpec(2, 1, height_ratios=[3, 1])
axes = []
axes.append(plt.subplot(gs[0]))
plt.title('셀트리온', fontproperties=fontprop)
plt.ylabel('주식가격', fontproperties=fontprop)

axes.append(plt.subplot(gs[1], sharex=axes[0]))
plt.xlabel('날짜', fontproperties=fontprop)

axes[0].get_xaxis().set_visible(False)


x = np.arange(len(df_068270.index))

_xticks = []
_xlabels = []
_wd_prev = 0
for _x, d in zip(x, list(df_068270.index)):
    print(str(d))
    weekday = datetime.datetime.strptime(str(d), '%Y-%m-%d %H:%M:%S').weekday()
    if weekday <= _wd_prev:
        _xticks.append(_x)
        _xlabels.append(datetime.datetime.strptime(str(d), '%Y-%m-%d %H:%M:%S').strftime('%m/%d'))
    _wd_prev = weekday
axes[1].set_xticks(_xticks)
axes[1].set_xticklabels(_xlabels, rotation=45, minor=False)

axes[0].plot(x, df_068270.Open)
axes[1].bar(x, df_068270.Volume)
plt.tight_layout()

plt.show()

 

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

64. PyQtGraph 그래프 두 개 그리기  (0) 2021.08.13
63. PyQtGraph 기본 그래프 그리기  (0) 2021.08.12
61. 주식 데이터  (0) 2021.08.12
60. 멀티스레딩  (0) 2021.08.10
59. 이벤트 루프  (0) 2021.08.10