LoginSignup
24
39

More than 5 years have passed since last update.

Pythonでローソク足チャートの表示(Plotly編)

Posted at

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データ、日時データを渡すだけです。

こんな感じのチャートになります。

newplot.png

実際にはチャートのズームやパンが自由にできるので、下のように拡大表示させることもできます。

newplot.png

営業日のみのローソク足チャート

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)

これで表示させたチャートは以下のようになります。

newplot.png

x軸の目盛が1週間間隔で表示されるのでちょっと細かいですが、拡大すると見やすくなります。

newplot.png

これで営業日のみのローソク足チャートとなっていることがわかります。

24
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
39