2017年08月16日

日経平均&個別株の騰落率グラフ生成(Python+matplotlib+Flask)

特定の株の証券コードを入力すると基準日からの騰落率を日経平均とともに折れ線グラフで表示するスクリプトをpythonで作成してみました。


また、表示した時の画面は下記のような画面になります。ちなみに毎回グラフの画像を作成しているのですが、削除していないので、適宜手動でpngファイルを削除しないといけない欠点があります。
20170816_stock_graph_0.jpg


今回、このスクリプトを作成する上で、matplotlibとfontまわりで少し引っかかったので、引っかかったポイントに続きます。

引っかかったポイント

■matplotlib

  • モジュールのインストール
xrea.com上にもmatplotlibモジュールはインストールされているようでしたが、今回改めてローカル上にインストールしました。(インストールしないとErrorになる。versionの問題?)

python3.5 -m pip install matplotlib --user

  • モジュールの使い方
スクリプトを作成しているWindows上と同様の設定でサーバー上でも動かそうとした場合、DISPLAY関連設定でErrorが発生します。そのためAgg(Anti-Grain Geometry)をpyplotのimport前に実施する必要があります。

# matplotlib.use('Agg')はpltの前に実施する必要あり
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

 

■日本語フォント

Windowsの環境では指定の日本語FONTを読み込むように下記の様な設定をしていましたが、サーバー上では別途指定をする必要があります。
前回、SBI証券のリスク資産をパイチャート(円グラフ)で示すEXCELを作成しま...
指定の方法としては、下記のDIRにFONTデータを格納し

StockGraphFlask
├─static
│  ├─css
│  ├─fonts ← ここにfontを格納
│  ├─image
│  └─js
└─templates

下記の様にpltで日本語を使用するときにfontも合わせて指定する必要があります。
        # サーバー上に日本語Fontを置いてlabelや凡例を表示させている
prop = fm.FontProperties(fname='static/fonts/ipaexg.ttf')
plt.ylabel("基準日からの騰落率(%)", fontproperties=prop)
plt.legend(prop=prop)

一応これで、初めに表示していたような画面をmatplotlibで作成することが出来ました。スクリプトは長いので別の記事に続きます。

スポンサーリンク
posted by くまなべ at 20:03 | Comment(0) | TrackBack(0) | Python
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/180673553
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック