【Python】Pandas で取得した Ticker を使ってチャートを描画する

2018年4月16日Python,開発

おはようございます。

前回に引き続き、Ticker 情報を利用してあれこれ試していきたいと思います。
今回は、matplotlib を使ってチャートを描画してみます。

プログラムは前回のものを流用します。

【Python】Pandas を使って MySQLのデータを読み込む

スポンサーリンク

パッケージ追加

matplotlib のパッケージをインストールします。

Default Settings の選択

上部メニューの「File」>「Default Settings」を選択します。

Default Settings 画面

Default Setting画面が表示されるので、右上の対象プロジェクト環境を今回作成した環境に変更し、右側にある「+」ボタンをクリックします。

パッケージ検索画面

パッケージ検索画面で、「matplotlib」と検索します。
一覧に表示された「matplotlib」を選択して「Install Package」ボタンをクリックします。

プログラムの修正

インポート宣言の追加

BfTool.py

import matplotlib.pyplot as plt
import pandas as pd

データ取得処理の追加

BfTool.py

class GetTicker(RequestHandler):
    """
    ティッカー情報を取得
    """

    def initialize(self):
        logging.info("GetTicker [initialize]")

    def post(self):
        logging.info("GetTicker [post]")

        # ティッカー情報の取得
        mysql = MySQLUtil()
        df = mysql.convert_table_to_df()

        # 最終取引価格を浮動小数点に変換
        df['LTP'] = df['LTP'].astype("float")

        # 取引日時の型を変換
        df['TIME_STAMP'] = pd.to_datetime(df['TIME_STAMP'])

        # 取引日時をインデックスに設定
        df.set_index('TIME_STAMP', inplace=True)

        """
        1分毎のデータを抽出
        freq="H" 時間
        freq="T" or "min" 分
        freq="S" 秒
        freq="5T" 5分
        """
        span = pd.date_range('2018-04-12 00:00:00', periods=1000, freq="T")
        df = df[df.index.isin(span)]

        # 同じ日時のデータがある場合は、そのうちの最大値をとる
        grouped = df.groupby("TIME_STAMP")
        df = grouped.max()

        # プロットの設定
        df["LTP"].plot(legend=True, figsize=(10, 6))
        plt.xticks(df.index)
        plt.xlabel("日時 TIME_STAMP")
        plt.ylabel("最終取引価格 LTP")
        plt.show()

        self.write(df.to_json(orient="records"))

 

起動してみる

起動して「取得」ボタンをクリックすると「matplotlib」のビューアが立ち上がり、チャートが表示されます。

チャート

よく見てみると、Y、X軸のラベルが文字化けしてしまっています。
「matplotlib」にはデフォルトで日本語が表示できるフォントがないようなので、
別途フォントをインストールして文字化け解消してみます。

プロットの文字化け解消

フォントのダウンロード

次のURLからフォントファイルをダウンロードします。

IPA 独立行政法人 情報処理推進機構

ダウンロードサイト

「IPAexフォント Ver.xxxx」をクリックします。

フォントダウンロード

IPAex ゴシックのリンクをクリックしてダウンロードします。

フォントファイルの配置

ダウンロードした「ipaexg.ttf」を次のディレクトリにコピーします。

ディレクトリ:
[プロジェクトホーム]\venv\Lib\site-packages\matplotlib\mpl-data\fonts\fonts\ttf\

フォルダにコピー

リソースファイルの修正

次のファイルを、ユーザー設定のディレクトリにコピー

ファイル:
[プロジェクトホーム]\venv\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

格納先:
C:\Users\[user_name]\.matplotlib\

コピーしたファイルに次の記述を追加

matplotlibrc

font.family : IPAexGothic

再度起動してみる

文字化け対応後

無事に文字化けが解消されました。

本家のチャート

該当する時間の本家のチャートを見ると、なんとなく合ってそうですね。笑

まとめ

とりあえずは matplotlib 付属の画面に表示しましたが、そのうちブラウザで表示できるようにしたいですね。

とりあえず次回は別のチャートもやってみようと思います。

ではでは。

 

 

スポンサーリンク


関連するコンテンツ

2018年4月16日Python,開発Python,サンプルプログラム,チャート

Posted by doradora