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()