Plotly graph_objectsの設定#
※記事内に商品プロモーションを含むことがあります。
公開日
Pythonのインタラクティブなグラフを描画できるライブラリPlotlyにて、graph_objectsを使ったグラフの設定方法を解説します。
Plotlyには、高水準のAPIであるPlotly Expressと呼ばれるものもありますが、
この記事では細かい調節ができるgraph_objectsを対象としています。
graph_objectsの基礎#
graph_objectsを使った簡単なグラフ描画の例を以下に示します。
import plotly.graph_objects as go
fig = go.Figure(
data=go.Bar(x=[1, 2, 3], y=[1, 3, 2]),
layout={
"title": "Graph Title",
"xaxis": {"title": "X AXIS"},
"yaxis": {"title": "Y AXIS"},
},
)
fig.show()
上の例を解説します。
まず、import plotly.graph_objects as goでgraph_objectsをインポートします。
次に、go.Figure()でグラフを作成します。
go.Figure()には主に以下の引数があります。
data: グラフに表示するデータlayout: グラフの表示を制御
data引数には、go.Bar(棒グラフ)やgo.Scatter(散布図、折れ線グラフ)などのオブジェクト、またはこれらのオブジェクトをリストやタプルで与えることができます。
layout引数には、辞書形式や、go.Layoutオブジェクトを与えることができます。
最後にfig.show()を実行してグラフを描画します。
グラフの種類#
Plotlyの主なグラフを以下に示します(go.Scatter, go.Barのように利用します)。
2次元グラフ
Scatter: 散布図、折れ線グラフBar: 棒グラフPie: 円グラフHeatmap: ヒートマップBox: 箱ひげ図Violin: ヴァイオリンプロットHistogram: ヒストグラム
3次元グラフ
Mesh3d: 3次元の立体表面Scatter3d: 3次元散布図Surface: サーフェスプロット
layoutオプション#
主なlayoutオプションを以下に示します。
title(str): グラフのタイトルxaxis/yaxis: x軸、y軸title(str): x軸、y軸のタイトルrange(tuple): 軸の範囲
legend: 凡例title(str): 凡例のタイトル
titleやxaxis/yaxisにはfontオプションで以下を指定できます。
size(int): フォントサイズcolor(str): 文字色
複数系列のグラフ#
複数系列のグラフをプロットするには、go.Figureのdata引数にグラフデータをリストやタプルで複数与えます。
name引数に系列名を与えることができます。
fig = go.Figure(
data=[
go.Bar(x=[1, 2, 3], y=[1, 3, 2], name="Series 1"),
go.Bar(x=[1, 2, 3], y=[3, 2, 1], name="Series 2"),
],
)
fig.show()
もしくはadd_trace(), add_traces()メソッドを使用して、go.Figureに後からグラフデータを追加することもできます。
add_trace()メソッド:グラフデータのインスタンスを1個だけ追加する。add_traces()メソッド:グラフデータのインスタンスをリストやタプルで複数追加する。
上記と同じ結果を以下で再現できます。
add_trace()メソッドの例:
fig = go.Figure()
fig.add_trace(go.Bar(x=[1, 2, 3], y=[1, 3, 2], name="Series 1"))
fig.add_trace(go.Bar(x=[1, 2, 3], y=[3, 2, 1], name="Series 2"))
fig.show()
add_traces()メソッドの例:
fig = go.Figure()
fig.add_traces(
[
go.Bar(x=[1, 2, 3], y=[1, 3, 2], name="Series 1"),
go.Bar(x=[1, 2, 3], y=[3, 2, 1], name="Series 2"),
]
)
fig.show()
レイアウトの設定#
グラフのレイアウトを変更するには、go.Figureのlayoutオプション以外に以下のメソッドで後から変更できます。
update_layout(): グラフ全体のレイアウトupdate_xaxes(): x軸の設定update_yaxes(): y軸の設定
各メソッドで指定できるオプションを以下に示します。
update_layout#
showlegend(bool):Falseにすると凡例を非表示にするtitle(str): グラフ全体のタイトルwidth(float): グラフ全体の横幅height(float): グラフ全体の高さhovermode:Falseにするとカーソルをあてたときにデータを表示しないtemplate(str): 表示スタイルを指定。
templateは以下から指定できます(デフォルトはplotly)。
'ggplot2', 'seaborn', 'simple_white', 'plotly', 'plotly_white',
'plotly_dark', 'presentation', 'xgridoff', 'ygridoff', 'gridon', 'none'
update_xaxes/yaxes#
title(str): 軸のラベルrange(tuple, list): 軸の範囲rangeslider(dict):{"visible":True}とするとレンジスライダーを表示
レンジスライダーの例を以下に示します。下側のつまみを左右に動かすことにより、上側のグラフを拡大・縮小できます。
fig = go.Figure()
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[1, 3, 2], name="Series 1"))
fig.add_trace(go.Scatter(x=[1, 2, 3], y=[3, 2, 1], name="Series 2"))
fig.update_xaxes(rangeslider={"visible":True})
fig.show()
グラフのフォント#
グラフ中のフォントを変更する例を示します。
以下ではフォントサイズを30, 文字色を赤としています。
fig = go.Figure(
data=go.Bar(x=[1, 2, 3], y=[1, 3, 2]),
layout={
"title": {
"text": "Graph Title",
"font": {
"size": 30,
"color": "red",
},
},
},
)
fig.show()