【初心者向け】Pythonでplotlyの使い方を徹底解説(インストール方法からグラフまで)

Pythonでグラフを描くときに便利なplotlyですが、初心者にとっては難しいかもしれないですね。

私も初めて使ったときは何が何だかサッパリでしたが、理解できるとサクサクグラフを描くことができます。

今回は初心者向けにplotlyのややこしい使い方をまとめみました。

この記事よ読むと次のことが理解できます。

  • plotlyを理解するために必要な用語
  • expressとgraph_objectsのコードの違い
  • ploltyでグラフを描くときの考え方
  • よく使うメソッドとその意味

インストール方法

pipでインストールします。

インストールが完了したらライブラリのインポートです。

ここでgoとpxの2つをインポートしていますが、使い方が異なるので注意が必要です。

関連記事

Pythonで図やグラフを描くときにPlotlyを使ったことはありますか? matplotlibが有名なので使っている人が多い印象ですが、Plotlyの方がグラフを動かしたり拡大したりとインタラクティブなので便利です。 そこで[…]

plotlyとは?インストールやインポートの方法

この記事で基本的な考え方や必要な知識を解説していきます。

plotlyの基本

用語意味
Figureオブジェクトグラフを描くときの土台となるオブジェクト
これにtraceを追加していきます。
trace
(グラフオブジェクト)
グラフの種類やデータとなるオブジェクト
Figureに追加してグラフを描くことができる
layoutグラフの大きさや背景、タイトル、凡例(legend)など
figureオブジェクトにupdate_layoutメソッドで設定
xaxes(xaxis)x軸のラベルやタイトルなど
figureオブジェクトにupdate_xaxes メソッドで設定
yaxes(yaxis) y軸のラベルやタイトルなど
figureオブジェクトにupdate_yaxes メソッドで設定

これらが基本的な用語です。

plotlyでは同じグラフでも様々なき方があります。

初心者にとってそれがややこしいところですね。

次のコードも棒グラフを描く一つの例です。今回は上の用語に合わせて一つ一つ丁寧に書いてみました。

plotlyの使い方
棒グラフ

では、用語の解説を一つ一つ見ていきます。

graph_objectsをインポート

plotly.expressもありますが、goの方が基本を理解しやすいと思います。

expressとのコードの違いは後半で解説します。

Figureオブジェクトを作成

グラフを描く土台となるオブジェクトです。

これで作成できます。

Figure()には引数を取ることができます。traceのところで解説しています。

trace(グラフオブジェクト)の作成

グラフデータのことだと考えておきましょう。

どんな種類のグラフを使って、どんな値をプロットするのかという情報が格納されています。

go.Barは棒グラフなのでBarオブジェクトがつくられています。

ほかにも、グラフの種類ごとにオブジェクトがわかれています。

散布図(Scatterオブジェクト)、ヒストグラム(Hostogramオブジェクト)、円グラフ(Pieオブジェクト)などです。これらをまとめてtraceと呼んでいるわけですね。

traceの追加

traceを作成したら、Figureに追加しながらグラフを描くことになります。

traceを追加するためのメソッドは他にもあります。

メソッド意味
add_traceFigureにtraceを一つだけ追加します。
add_tracesFigureにtraceを複数個追加します。
複数のグラフを重ねて書く方法は別記事で紹介します。
update_tracesFigureのtraceを上書きします。
それまでのtraceは消えるので注意が必要です。

また、メソッドを使わない方法もあります

このようにFigureにはdata引数があり、それにtraceを渡してあげるとメソッドを使わないで書くこともできます。

もっと言うと、わざわざtrace1を作らなくても次のように書けます。

書き方がたくさんあるので難しいと感じるかもしれませんが、Figureやtraceの意味を理解しているとわかりやすいですよね。

layoutの設定

update_layout()メソッドを使います。

グラフのタイトルと縦、横の大きさを決めています。

ほかにも様々の引数でフォントや凡例などの設定が可能です。

layoutの引数一覧(公式サイト)

xaxis、yaxisの設定

update_xaxes()update_yaxes()メソッドを使います。

ちなみに、axisが軸でaxesはその複数形です。

軸の設定なので、引数は似ているものが多いです。

xaxisの公式サイト

yaxisの公式サイト

layout、xasis、yaxisを一括で書く方法

このようにLayoutオブジェクトを作成してから追加することもできます。

この書き方の場合はdictで書かないといけない引数があるので注意が必要です。

Layoutオブジェクトの引数(公式ドキュメント)

メソッドで一つ一つ追加するもよし、Layoutオブジェクトで一気に追加するもよしです。

trace、layout、xasis、yaxisを一括で書く方法

Figureはdata引数だけでなく、layout引数も持っています

それにgo.layoutで作ったlayoutオブジェクトを渡してあげましょう。

このように書くことでメソッドを一つも使わずにグラフを作ることができます。

もちろん出力結果は最初の棒グラフと同じです。

plotly.expressの使い方

先ほどgoで描いたグラフをexpressで描くと以下のようになります。

関連記事

Pythonで図やグラフを描くときにPlotlyを使ったことはありますか? matplotlibが有名なので使っている人が多い印象ですが、Plotlyの方がグラフを動かしたり拡大したりとインタラクティブなので便利です。 そこで[…]

plotlyとは?インストールやインポートの方法

goとpxで同じところ

  • レイアウトの設定
  • 軸の設定
  • グラフの表示

これらはgoのときと同じメソッドが使えます。

layoutに関しては別の書き方があります。(後述)

goとpxで異なる点

  1. plotly.expressをインポートする
  2. グラフ名の大文字と小文字に注意
    • goのとき:go.Bar()
    • pxのとき:px.bar()
  3. pxはFigureオブジェクトを返す。
  4. pxはlayputも変更可能

インポート名が異なることや大文字と小文字の違は当然ですね。

特に重要な3と4についてみていきましょう。

今回はbarを例に解説していますが、px.scatterやpx.histogramなどでも同じことが言えます。

pxはFigureオブジェクトを返す。

goとの最大の違いは戻り値です

go.Barの戻り値はBarオブジェクトですが、px.barの戻り値はFigureオブジェクトです。

goとpxではコードの量が異なります。

公式サイトでもその例が説明されています。

pxはlayputも変更可能

先ほどupdate_layoutメソッドで書いていた部分をpx.barに組み込んでいます。

このような書き方もできますが、すべてのlayoutを設定できるわけではありません。

より細かい設定は必要な場合はメソッドで変更しましょう。

まとめ

今回はploltyの基本とgo、pxのコードの違いを見ていきました。

  • Figure、trace、layout、xaxis、yaxisの役割
  • trace、layout、xaxis、yaxisのメソッドの意味
  • goとpxの戻り値の違い
  • goとpxのコード量の違い

人によってコードの書き方が異なるので初心者にとっては難しく感じるかもしれませんが、一つ一つの言葉の意味とコードの役割を理解しておくと簡単にグラフを描くことができます。

goとpxでどちらが優れているということはありません。基本を理解していればどちらでもラクラク書けるはずです。

参考になれば幸いです。