Python

【plotlyチュートリアル】<>2軸のグラフ作成

本記事では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について学べる数少ない参考書です。

Mickey@コーヒー好きエンジニア

【製造業×プログラミング×AI】Python/VBAを活用した業務改善、Streamlit/Plotlyを活用したWebアプリ開発について初心者向けに発信中|趣味は自家焙煎コーヒー作り|noteでは焙煎理論を発信|ココナラではプログラミングに関する相談,就職/転職やコーヒーに関する相談などのサービスをやっています