本記事ではPythonのグラフライブラリとして使えるplotlyによる「2軸のグラフ」作成について紹介します。
実践で使えるようなExcel形式のデータを使用しながら解説していきます。
完成グラフ
こちらが完成するグラフです。
積み上げの棒グラフと折れ線グラフが表示されています。
それでは早速コードを解説していきます。
使用するライブラリのインポート
import pandas as pd
import plotly.graph_objects as go
import plotly.io as pio
Excelデータの読み込み
今回使用するデータはこのようなものです。
これをpandasのデータフレームとして読み込みます。
df= pd.read_excel('生産実績.xlsx')
グラフの作成
trace1,2は積み上げ棒グラフ(Bar)の記述部分、trace3が折れ線グラフ(Line)の記述部分です。
今まで紹介していない部分は各trace内の「yaxis=’●●’」のところです。
このyaxis=’y1’または’y2’が2軸のグラフを作成する際に必要となる軸の指定部分になります。
デフォルトの状態ではy1とすると左の軸、y2とすると右の軸になります。
たったこれだけで2軸のグラフが作成できます。
グラフ作成部分で分からないところがあれば、今までのチュートリアルを確認してください。
https://cafe-mickey.com/category/python/plotly/
trace1=go.Bar(x=df['日'], y=df['Aグループ生産量'],text=df['Aグループ生産量'],name='Aグループ生産量', yaxis='y1')
trace2=go.Bar(x=df['日'], y=df['Bグループ生産量'],text=df['Bグループ生産量'],name='Bグループ生産量', yaxis='y1')
trace3=go.Line(x=df['日'], y=df['良品率'],text=df['良品率'],name='良品率', yaxis='y2')
レイアウトを変更する
ここではグラフのレイアウトを調整していきます。
タイトルの設定、軸(左軸・右軸)の設定、棒グラフの積み上げについて設定していきます。
go.Layout(title=’●●’)でタイトルが設定できます。
それに続き、軸の設定などは複数項目設定するためにdict(辞書型)で記述していきます。
xaxis = dict(title = ‘日付’, showgrid=False,dtick=1)
showgrid=Falseでメモリ線を消す、dtick=1は軸の間隔を1に設定するという意味です。
y軸も設定していきます。
side=’left’で左側の軸を指し、range=[●,●]で軸の範囲を設定できます。
yaxis = dict(title = ‘生産量(個)’, side = ‘left’, showgrid=False, range = [0, 3500])
次に2軸目の設定です。
side=’right’は右側の軸を指し、overlaying = ‘y’で1軸目とともに上書きされて表示されます。overlaying = ‘free’とすると1軸目のデータが表示されなくなります。
yaxis2 = dict(title = ‘稼働率(%)’, side = ‘right’, overlaying = ‘y’,range = [0, 100], showgrid=False)
レイアウト部をまとめたコードがこちらです。
layout = go.Layout(
title='各グループの生産量と良品率',
xaxis = dict(title = '日付', showgrid=False,dtick=1),
yaxis = dict(title = '生産量(個)', side = 'left', showgrid=False, range = [0, 3500]),
yaxis2 = dict(title = '稼働率(%)', side = 'right', overlaying = 'y', range = [0, 100], showgrid=False),
barmode="stack"
)
グラフの保存
pio.write_htmlでhtmlとして保存します。
fig= dict(data = [trace1,trace2,trace3], layout = layout)
pio.write_html(fig,file='2軸.html')
開いてみましょう。
以上で解説は終わりです。
Plotlyに関する書籍紹介
↓Plotlyについて学べる数少ない参考書です。