Plotlyで折れ線グラフや複合グラフ
この記事では plotly 2.3.0を利用しています。
はじめに
Plotlyは大変便利です。
実際に業務で利用する上で設定している項目などまとめてみました。ここでは折れ線や複合グラフ。
時系列のチャートを想定しています。なお、チャートは静止画です。
折れ線グラフ
# coding:utf-8
import pandas as pd
import numpy as np
import plotly.plotly as py
import plotly.graph_objs as go
import datetime
import plotly.offline as offline
offline.init_notebook_mode()
# 日付の作成。100日
d1 = datetime.date(2017,1,1)
d1_list = []
for i in range(0,100):
temp = d1 + datetime.timedelta(i)
d1_list.append(temp)
# データの作成
X = np.random.randint(0,50,100)
Y = np.random.randint(0,100,100)
trace0 = go.Scatter(x = d1_list, y = X, mode = 'lines', name = 'X')
trace1 = go.Scatter(x = d1_list, y = Y, mode = 'lines', name = 'Y')
# レイアウトの指定
layout = go.Layout(xaxis = dict(title = 'date', type='date', dtick = 'M1'), # dtick: 'M1'で1ヶ月ごとにラベル表示
yaxis = dict(title = 'value'))
fig = dict(data = [trace0, trace1], layout = layout)
offline.iplot(fig)
2軸の複合グラフ(折れ線と棒グラフ)
trace0 = go.Bar(x = d1_list, y = X, name = 'X', yaxis='y1')
trace1 = go.Scatter(x = d1_list, y = Y, mode = 'lines', name = 'Y', yaxis='y2')
# レイアウトの指定
layout = go.Layout(xaxis = dict(title = 'date', type='date', dtick = 'M1'), # dtick: 1か月ごとは'M1'
yaxis = dict(title = 'value(x)', side = 'left', showgrid=False, # 2軸だと見誤る場合があるので目盛り線は表示させない(showgrid=False)
range = [0, max(X)]), # rangeで指定したほうがよい。ゼロが合わない場合などがある。
yaxis2 = dict(title = 'value(y)', side = 'right', overlaying = 'y', range = [0, max(Y)], showgrid=False))
fig = dict(data = [trace0, trace1], layout = layout)
offline.iplot(fig)