Python3でグラフを描画

f:id:orcafamiliar:20200503164255p:plain

きっかけ

コロナの棒グラフを見ていたら、5日移動平均線MACDRCIをプロットしてみたくなった。ふと、描画したいなと思ったときにできるようになっておきたく。

matplotlib のインストール

どうやら、matplotlibがよく使われるらしい。下記でインストール。
> py -m pip install matplotlib

補足:pipが最新版ではなかったので下記で更新。
> py -m pip install --upgrade pip

とりあえず matplotlib にて y=x でも描画

f:id:orcafamiliar:20200427233029p:plain

感染者数を手入力でもinputして、棒グラフで出力

f:id:orcafamiliar:20200427235338p:plain ※上の数は適当。ファイルかなにかから取得すれば簡単に配列には入れられそう。

感染者数を取得(できればlistから)

date = list()
infected_count = list()

try:
    f = open(path)
    lines = f.read().split()
except Excption as e:
    print(e)
finally:
    f.close()

#棒グラフ
for i in range(int(len(lines)/2)):
    date.append(lines[i*2])
    infected_count.append(int(lines[i*2+1]))

5,25日移動平均線の追加(7日、14日が適切?

f:id:orcafamiliar:20200430135053p:plain

MACDの追加

一度計算用の関数を作ったけど、モジュールがあったのでそちらを使用。
関数を作ったことで、MACDがどんな計算で算出されているのかをすることができたのは収穫。
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib にて下記をダウンロード
64bitOS ⇒ TA_Lib-0.4.17-cp36-cp36m-win_amd64.whl

pip install TA_Lib-0.4.17-cp36-cp36m-win_amd64.whl

codeでは下記のように使用。np.arrayに手間取った。

import talib

### 感染者数と日付のデータをlistに入れる
infected_count_int = list()
for i in range(int(len(lines)/2)):
    date.append(lines[i*2])
    infected_count_int.append(int(lines[2*i+1]))
infected_count = np.array([float(x) for x in infected_count_int])

#MACD
macd, macdsignal, macdhist = talib.MACD(infected_count, fastperiod=12, slowperiod=26, signalperiod=9)

下記サイトを参照しました。
python3でTA-Libをインストールする方法をまとめてみた - Qiita

日本語対応

タイトルなどに日本語を使用したかったので、下記をインストールして本文でimport > py -m pip install japanize-matplotlib

import japanize_matplotlib

次(計算めんどくさくて後日に...。