Pythonでローソク足チャートの表示(matplotlib編)
の続きです。
Plotlyは、Python専用のパッケージというわけではなく、RやMatlab、JavaScriptなどにも対応しています。オンラインモードだとアカウントを作る必要がありますが、オフラインで使う場合、特にアカウント作る必要はありません。以下はオフラインでの説明です。
準備
PlotlyのPythonパッケージのインストールは、このページにあるように
$ pip install plotly
でOKです。
では、前回の記事と同様、架空の4本値データを作っておきます。ただし、今回は1年分のデータとします。
import numpy as np
import pandas as pd
idx = pd.date_range('2015/01/01', '2015/12/31 23:59', freq='T')
dn = np.random.randint(2, size=len(idx))*2-1
rnd_walk = np.cumprod(np.exp(dn*0.0002))*100
df = pd.Series(rnd_walk, index=idx).resample('B').ohlc()
Plotlyを使ったローソク足チャート
参考にしたページはこちらです。
Candlestick Charts in Python
まずは、標準の設定のままローソク足チャートを表示させます。
from plotly.offline import init_notebook_mode, iplot
from plotly.tools import FigureFactory as FF
init_notebook_mode(connected=True) # Jupyter notebook用設定
fig = FF.create_candlestick(df.open, df.high, df.low, df.close, dates=df.index)
iplot(fig)
create_candlestick
の引数にOpenデータ、Highデータ、Lowデータ、Closeデータ、日時データを渡すだけです。
こんな感じのチャートになります。
実際にはチャートのズームやパンが自由にできるので、下のように拡大表示させることもできます。
営業日のみのローソク足チャート
Plotlyのチャートはインタラクティブチャートでとても便利なのですが、やはり、そのままでは土日のスペースができてしまい、営業日で連続していません。
そこで、営業日のみが連続するようにx軸データを細工します。やり方はmatplotlibの場合と同じです。create_candlestick
の引数dates
を省略すると、x軸のデータは整数インデックスとなります。なので、x軸の目盛としてインデックスに対応する日時データを表示させます。
fig = FF.create_candlestick(df.open, df.high, df.low, df.close)
xtick0 = (5-df.index[0].weekday())%5 #最初の月曜日のインデックス
fig['layout'].update({
'xaxis':{
'showgrid': True,
'ticktext': [x.strftime('%Y-%m-%d') for x in df.index][xtick0::5],
'tickvals': np.arange(xtick0,len(df),5)
}
})
iplot(fig)
これで表示させたチャートは以下のようになります。
x軸の目盛が1週間間隔で表示されるのでちょっと細かいですが、拡大すると見やすくなります。
これで営業日のみのローソク足チャートとなっていることがわかります。