【Python】plotlyを使った動的グラフの作成の基礎・基本−1

インストール

まずは、plotlyのインストールを実行します。

plotlyのインストール
pip install plotly

オブジェクトと基本的な考え方

・plotlyで作成されるグラフのオブジェクトは大きく、下図のように「グラフエリア*1」と「プロットエリア*2」に分かれます。
*1 以下では「Figure」とします。 *2 以下では「trace」とします。

・「Figure」:描画領域全体

・「trace」:一つ一つのプロットを描画する領域(座標軸)

・plotlyでは、「Figure」オブジェクトに「trace」オブジェクトを追加することでグラフを描画していきます。

基本手順

plotlyでグラフを描画する場合、以下が基本手順となります。

グラフオブジェクトの作成fig = go.Figure()figというグラフオブジェクトをインスタンス化します。

fig(グラフオブジェクト)に追加操作:fig.XXX()でグラフや凡例等を追加します。(③と④は例)

プロットの追加fig.add_trace(), fig.add_traces()

layout設定の追加fig.update_layout()

基本的なplotlyモジュール関数のまとめ

グラフ操作 関数名 備考
Figureオブジェクト作成 fig = go.Figure() 描画領域の作成
trace
(グラフオブジェクト)作成
trace = go.Bar(x=x, y=y) グラフデータの作成
traceの追加 fig.add_trace(trace) Figureオブジェクトにtraceを一つだけ追加
traceの複数追加 fig.add_traces((trace1, trace2, …))

Figureオブジェクトに複数のtraceを追加
関数は二重()が必要なので注意。

traceの更新

一つだけ更新の場合:
fig.update_traces(trace1)
複数更新の場合:
fig.update_traces((trace1, trace2))

既存のtraceを削除して新規のtraceを追加

layoutの更新

fig.update_layout(
    title=’グラフタイトル’,
    width=1000,
    height=1000,
    xaxis=dict(title=’x軸’,
                    type=date),
    yaxis=dict(title=’y軸’),
)

・グラフ、軸のタイトルを設定できます。
・x軸、y軸の詳細設定ではdict()コンストラクタを使い()内に「key=value」のように記述していくと簡単です。
・x軸に「type=date」と記述しておくと、x軸の値がdate型と認識されます。

基本グラフの作成

①モジュールのインポート:plotly.graph_objects (通常、”go”というオブジェクト名で使用される。)

・plotlyで使用する基本モジュールであるplotly.graph_objectsをインポートします。

・plotly.graph_objectsは、通常”go”という略称で使用します。

plotly.graph_objectsのimport
import plotly.graph_objects as go

②グラフオブジェクトの作成:fig = go.Figure()

グラフオブジェクトの作成:plotly.graph_objects.Figure()
fig = go.Figure()

・描画領域であるグラフオブジェクトをfigという名称で作成します。

③プロットオブジェクトの作成:go.Bar(), go.Scatter() 等

グラフの種類に応じてオブジェクトが用意されています。

・棒グラフ=go.Bar()

・散布図=go.Scatter()

・折れ線グラフ=go.Scatter(mode=”lines”, line=dict(color=””, width=””, dash=””))

・円グラフ=go.Pie()

・表=go.Table(header=dict(values=””),cells=dict(values=””))

・ローソク足チャート=go.Candlestick()

③プロットオブジェクトの作成例:go.Bar(), go.Scatter() 等

・go.Bar()を使って簡単な棒グラフを作成します。

import numpy as np
y = np.linspace(1,100).tolist()
x = [i for i in range(1,51,1)]
fig = go.Figure()
trace_1 = go.Bar(x=x, y=y)
fig.add_trace(trace_1)
fig.update_layout(title='trace_1グラフ',
                  xaxis=dict(title='X軸'))
fig.show()
プロットオブジェクト生成例

layoutの設定

次に、グラフタイトル、X, Y軸名称, 軸間隔、凡例等の設定方法について解説します。

layoutの設定方法は下記3種類あります。

layout設定方法①:fig.update_layout(xaxis=dict(), yaxis=dict(), その他)

figオブジェクトに、”update_layout()“メソッドを使ってlayout設定する方法です。

・”update_layout()“のキーワード引数の”xaxis“と”yaxis“にそれぞれ辞書型で設定値を入力します。
 dict()関数を使用する場合、dict()関数の引数は、Key=”Value”(例:title=”X軸”)のように設定。

グラフ全体の設定(グラフタイトル等)は、Key=”Value”(例:title=”グラフタイトル”)のように設定。

※個人的には最も使用する方法です。

layout設定方法②:Layout = go.Layout(xaxis=dict(), yaxis=dict(), その他) と fig.update_layout(Layout)

layout設定方法③:fig.update_xaxes(dict()) と fig.update_yaxes(dict())

以降で、各設定方法毎に、同一の棒グラフの作成方法を解説します。

作成するグラフ
作成するグラフ

・グラフのタイトル=’サンプルグラフ’

・X軸の値=[1,2,3], Y軸の値=[1,2,3]

・X軸タイトル=’X軸’, Y軸タイトル=’Y軸’

・X軸間隔=1, Y軸間隔=1

グラフイメージ
layout設定方法①:fig.update_layout(xaxis=dict(), yaxis=dict(), その他)のグラフ作成方法
import plotly.graph_objects as go
fig = go.Figure()
x = [1,2,3]
y = [1,2,3]
trace = go.Bar(x=x,y=y)
fig.add_trace(trace)
fig.update_layout(xaxis=dict(title='X軸', dtick=1),
                  yaxis=dict(title='Y軸', dtick=1), 
                  title='サンプルグラフ')
fig.show()
layout設定方法②:
Layout = go.Layout(xaxis=dict(), yaxis=dict(), その他) と fig.update_layout(Layout)のグラフ作成方法
import plotly.graph_objects as go
fig = go.Figure()
x = [1,2,3]
y = [1,2,3]
trace = go.Bar(x=x,y=y)
fig.add_trace(trace)
Layout=go.Layout(xaxis=dict(title='X軸', dtick=1),
                  yaxis=dict(title='Y軸', dtick=1), 
                  title='サンプルグラフ')
fig.update_layout(Layout)
fig.show()
layout設定方法③:fig.update_xaxes(dict()) と fig.update_yaxes(dict())のグラフ作成方法
import plotly.graph_objects as go
fig = go.Figure()
trace=go.Bar(x=[1,2,3], y=[1,2,3])
fig.add_trace(trace)
fig.update_xaxes(dict(title='X軸', dtick=1))
fig.update_yaxes(dict(title='Y軸', dtick=1))
fig.update_layout(title='サンプルグラフ')
fig.show()

コメント

タイトルとURLをコピーしました