【Python】Pandas で取得した Ticker を使ってチャートを描画する
おはようございます。
前回に引き続き、Ticker 情報を利用してあれこれ試していきたいと思います。
今回は、matplotlib を使ってチャートを描画してみます。
プログラムは前回のものを流用します。
【Python】Pandas を使って MySQLのデータを読み込む
スポンサーリンク
パッケージ追加
matplotlib のパッケージをインストールします。
上部メニューの「File」>「Default Settings」を選択します。
Default Setting画面が表示されるので、右上の対象プロジェクト環境を今回作成した環境に変更し、右側にある「+」ボタンをクリックします。
パッケージ検索画面で、「matplotlib」と検索します。
一覧に表示された「matplotlib」を選択して「Install Package」ボタンをクリックします。
プログラムの修正
インポート宣言の追加
BfTool.py
1 2 | importmatplotlib.pyplot asplt importpandas aspd |
データ取得処理の追加
BfTool.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | classGetTicker(RequestHandler): """ ティッカー情報を取得 """ definitialize(self): logging.info("GetTicker [initialize]") defpost(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からフォントファイルをダウンロードします。
「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
1 | font.family:IPAexGothic |
再度起動してみる
無事に文字化けが解消されました。
該当する時間の本家のチャートを見ると、なんとなく合ってそうですね。笑
まとめ
とりあえずは matplotlib 付属の画面に表示しましたが、そのうちブラウザで表示できるようにしたいですね。
とりあえず次回は別のチャートもやってみようと思います。
ではでは。
ディスカッション
コメント一覧
まだ、コメントがありません