PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。配布ライセンスは LGPL で公開されています(商用ライセンスも有り)。最新のバージョンは Qt6 に対応した PySide6(記事執筆時点で 6.5.2)です。
ローソク足チャート (Candlestick chart) は、株価などの相場の値動きを時系列に沿って図表として表す手法の一つです。単位期間を定め、単位期間中に初めに付いた値段を始値(はじめね)、最後に付いた値段を終値(おわりね)、最も高い値段を高値(たかね)、最も安い値段を安値(やすね)とし、この四種の値段(四本値=よんほんね)を「ローソク」と呼ばれる一本の棒状の図形に作図し、時系列に沿って並べて値段の変動をグラフとして表したものです。
mplfinance ライブラリを使ってローソク足チャートをプロットできます。mplfinance は金融データの視覚化および分析のための matplotlib ユーティリティーです。
以前、PySide2 に mplfinance で出力したチャートを埋め込んだサンプルを示しましたが [1]、今回は PySide6 を使ったサンプル(改良版)を紹介します。
データファイル | candlestick_sample_data.csv |
上記サンプル CSV ファイルを読み込んでローソク足プロットを作成するスクリプトを下記に示しました。
qt_mpl_finance.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# coding: utf-8 | |
import matplotlib.pyplot as plt | |
import mplfinance as mpf | |
import pandas as pd | |
import sys | |
from matplotlib.backends.backend_qtagg import ( | |
FigureCanvasQTAgg as FigureCanvas, | |
NavigationToolbar2QT as NavigationToolbar, | |
) | |
from matplotlib.figure import Figure | |
from PySide6 import QtCore | |
from PySide6.QtWidgets import ( | |
QApplication, | |
QMainWindow, | |
) | |
class Example(QMainWindow): | |
def __init__(self): | |
super().__init__() | |
self.initUI() | |
self.resize(800, 600) | |
self.setWindowTitle('Candlestick Chart on PySide6') | |
def initUI(self): | |
# sample dataset | |
filename = 'candlestick_sample_data.csv' | |
df = pd.read_csv(filename, index_col=0, parse_dates=True) | |
fig = Figure() | |
grid = plt.GridSpec(3, 1, wspace=0, hspace=0.0) | |
ax1 = fig.add_subplot(grid[0:2, 0]) | |
ax2 = fig.add_subplot(grid[2, 0], sharex=ax1) | |
mpf.plot( | |
df, | |
style='binance', | |
type='candle', | |
mav=(14, 28), | |
show_nontrading=False, | |
datetime_format='%m/%d', | |
ax=ax1, | |
volume=ax2 | |
) | |
ax1.grid() | |
ax2.grid() | |
canvas = FigureCanvas(fig) | |
self.setCentralWidget(canvas) | |
self.addToolBar( | |
QtCore.Qt.ToolBarArea.BottomToolBarArea, | |
NavigationToolbar(canvas, self) | |
) | |
def main(): | |
app = QApplication(sys.argv) | |
ex = Example() | |
ex.show() | |
sys.exit(app.exec()) | |
if __name__ == '__main__': | |
main() |
Fedora 38 の GNOME デスクトップ環境で実行した例を示しました。
qt_mpl_finance.py の実行例
参考サイト
- bitWalk's: ローソク足チャート ~ python/mplfinance [2021-05-02]

にほんブログ村
#オープンソース

0 件のコメント:
コメントを投稿