Annotationは注釈という意味があり、plotlyではグラフの好きな位置に数値や文字列などのテキストを表示させるオプションのことを指します。
本記事では画像中央のグレーで囲まれた数値の注釈を表示させる方法について解説していきます。
このようなデータが準備できればOKです。
各種必要なライブラリをインポートします。
import pandas as pd
import plotly.graph_objects as go
import plotly.io as pio
エクセルデータを読み込みます。
df= pd.read_excel('生産実績.xlsx')
まずは土台となるグラフの作成です。
詳細は以下を参考にしてから本記事を読むと理解が進みます。
trace1=go.Bar(x=df['日'], y=df['Aグループ生産量'],text=df['Aグループ生産量'],name='Aグループ生産量',
yaxis='y1',textposition="inside",marker_color='rgb(0,113,188)')
trace2=go.Bar(x=df['日'], y=df['Bグループ生産量'],text=df['Bグループ生産量'],name='Bグループ生産量',
yaxis='y1',textposition="inside",marker_color='rgb(193,145,0)')
trace3=go.Scatter(x=df['日'], y=df['良品率'],text=df['良品率'],name='良品率',
yaxis='y2',marker_color='rgb(51, 153, 51)',mode='lines+markers+text',textposition='top right')
ここからが本題のレイアウト変更です。
annotations以降のdict(辞書型)で注釈の詳細を決めていきます。
font(フォント)、borderwidth(ボーダーラインの太さ)、borderpad(文字とボックス縁の間の余白)、bgcolor(背景色)、opacity(不透明度)などが調整できます。
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,tickfont=dict(color='rgb(51, 153, 51)')),
barmode='stack',
annotations=[
dict(
x=df.iat[i,2],
y=df.iat[i,5],
xref="x",
yref="y",
text=str(df.iat[i,5]),
font=dict(
family="Courier New, monospace",
size=16,
color="#ffffff"
),
borderwidth=1,
borderpad=2,
bgcolor='black',
opacity=0.7
)for i in range(len(df))
],
)
実際に表示してみましょう。
fig= dict(data = [trace1,trace2,trace3], layout = layout)
pio.write_html(fig,file='2軸-1.html')
plotlyの公式においてもアノテーションについて解説があります。
例えば矢印を追加したい場合はshowarrow=Trueで設定できます。
コードは以下の通りです。
fig.add_annotation(
x=2,
y=5,
xref="x",
yref="y",
text="max=5",
showarrow=True,
font=dict(
family="Courier New, monospace",
size=16,
color="#ffffff"
),
align="center",
arrowhead=2,
arrowsize=1,
arrowwidth=2,
arrowcolor="#636363",
ax=20,
ay=-30,
bordercolor="#c7c7c7",
borderwidth=2,
borderpad=4,
bgcolor="#ff7f0e",
opacity=0.8
)
以上で解説は終わりです。
↓Plotlyについて学べる数少ない参考書です。