matplotlibを超えるplotlyで描くインタラクティブなグラフ

Pythonを使ってグラフを書く際、一番始めに思いつくライブラリーは、matplotlibではないでしょうか。

matplotlibはグラフを書くのにとてもパワフルなライブラリーですが、静的なグラフを表示することが主要な使い方で、インタラクティブに表示を変えることはできません。

インタラクティブは、相互の作用という意味ですが、ユーザの要求に応じて、プログラム側が処理内容や表示を変えることを意味しています。

そんな痒いところに手が届く、ライブラリーがあります。

それが、plotlyです。

plotlyは、pythonで使える、インタラクティブなグラフを書くことができるライブラリーです。

plotlyはpythonだけでなくjavascriptでも利用できる、パワフルなライブラリーです。

Python3をお使いの方であれば、ライブラリー管理プログラムのpipを使って簡単にインストールすることができます。

この記事では、plotlyのインストールの仕方から、グラフの書き方をご紹介します。

plotlyライブラリーの導入方法

多くの方がpython3を使っているかと思います。

そんな方であれば、pipというプログラムが標準でインストールされており、pipを使うことでpython関連のライブラリーを自由に導入(インストール / バージョンアップ / アンインストール) することができます。

pipを使ってライブラリーをインストール

それでは、pipを使って、plotlyライブラリーをインストールしていきましょう。

最新バージョンを導入したい場合は、コマンドプロンプト(もしくはターミナル)を立ち上げて、下記のコマンドを実行してみてください。

python -m pip install -U plotly

pipの使い方ももっと知りたい方は、記事「簡単にPythonライブラリーをインストールしようぜ!」をご覧ください。

plotlyを使ってグラフを書いてみる

まずは、棒グラフ(Bar)を書いてみましょう。

下記がサンプルプログラムです。

import pandas as pd
import plotly.graph_objects as go

#グラフ表示するデータ
pd_data = pd.DataFrame([ [3,4,5,3,2,2,2,2,3],[5,8,2,2,8,5,7,4,5],[4,1,8,1,3,1,3,1,4]], index=["1位", "2位", "3位"])

x = t_pd.index

d0 = go.Bar(
    x=x,  
    y=pd_data.loc["1位"],
    name='1着'
)

d1 = go.Bar(
    x=x,  # xの値
    y=pd_data.loc["2位"],
    name='2着'
)

d2 = go.Bar(
    x=x, 
    y=pd_data.loc["3位"],
    name='3着' 
)

graph = [d0, d1, d2]

fig = go.Figure(data=graph)
fig.update_layout(title='グラフのタイトル')

fig.show()

plotlyを使った実行結果

下記が実行結果になります。

plotlyを使った例

一見、matplotlibと同じようなグラフが表示されたかと思います。

しかし、凡軸の3着(グリーン)をクリックすると、1着と2着のみのグラフに変わります。

plotlyでインタラクティブな処理をやってみた

マウスで棒を選択すると、値がポップアップで表示されたりもしますので、ユーザフレンドリー(インタラクティブなグラフ)になっています。

matplotlibの場合、コード変更及びプログラムの再実行が必要でしたが、plotlyはライブラリー自体が私たちの代わりにグラフを変更してくれているのです。

また、ファイルの出力、グラフのズームなどもできますので、とても便利です。