Python Plotly入門(①概要)

plotly入門

今回から数回かにわたってPython Plotlyを使ったデータの可視化について取り扱いたいと思います。

第一回目は概要です。

まず、Pythonでグラフを描く場合、MatplotlibやSeabornを使うのが大半だと思います。

これらのツールは簡単にしかも非常に見やすいグラフを描くことができます。

しかしながら、今回オススメするPlotlyではインタラクティブな可視化を簡単に行うことができます。

データ・サイエンティストやデータ分析者にとって、データの可視化は非常に重要な技術ですので、Plotlyをマスターすると分析の高度化や、お客さんに分析結果を報告する際に非常に便利だと思います。

Plotlyとは

Plotlyはインタラクティブなグラフを作成するPythonのライブラリです。

インタラクティブというのは、単にグラフを表示するだけでなく、以下のように、カーソルを合わせるとその点についてのテキスト情報などを表示したり、部分的に拡大したりできます。

また、カスタムコントロールと呼ばれる機能を使うことよりさらに高度な設定が可能です。

そして、Plotlyは様々なグラフに対応しており、線グラフや散布図はもちろん、統計や金融に関するグラフも作成することができます。

作成できるグラフは他にも多数ありますので、Plotlyのホームページを参照いただければと思います。

Plotlyのメリット

Plotlyを使うメリットを簡単にまとめると以下のようになります。

  • インタラクティブな可視化が可能
    散布図をプロットしたときに、点が密集している箇所はよくわからなかったりしますが、より詳しく見たい部分を囲むことでその部分だけを拡大することができます。
    また、各要素が何の数字なのか見たい場合はそこにカーソルを当てると、各要素の説明を見られるように設定するも可能です。
  • プロットするのが簡単
    何となくインタラクティブな可視化と言われると難しいのかなと思ってしまう人もいるかもしれませんが、そんなことはまったくありません。
    非常にシンプルで、個人的にはMatplotlibよりもわかりやすいと思います。
    ですので、インタラクティブな可視化が必要なくてもPlotlyで描画する場合も多いです。
  • 見た目が良い
    基本的にMatplotlibよりも見た目の良いグラフが作成できると思います。

とりえあず使ってみよう

では、とりあえずPlotlyを触ってみましょう。

まずPlotlyのインストールをします。

インストールはこちらの公式ホームページに従ってください。

pip install plotly==4.14.3

これで準備は万端です。

とりあえず、以下のようなデータがあったとします。

x = ['1', '2', '3']
y = [50, 20, 30]

これを棒グラフで表示したいとしましょう。

まず、plotly.graph_objectsをインポートします。

import plotly.graph_objects as go

次に棒グラフを表示したいのでgo.Barクラスにx、yの値を設定することでインスタンス化します。

data = go.Bar(x=x, y=y)

あとは、go.Figureに作成した棒グラフデータを渡してやれば表示されます。

go.Figure(data)

以下のようにshow()メソッドを呼び出しても構いません。

go.Figure(data).show()

これだけで、インタラクティブなグラフを作成することができます。

下の画像は、グラフ上の棒にカーソルを合わせて必要な情報を確認したり、一部を拡大したりしています。

ダブルクリックをすると拡大したものがもとに戻ります。

次に散布図を描いてみましょう。

Irisデータセットをダウンロードして使います。

ここでは、setosaとversicolorについてガクの長さを横軸に、幅を縦軸にプロットします。

では、まずデータを作ります。

from sklearn.datasets import load_iris
iris = load_iris()
x1 = iris['data'][:50, 0]
y1 = iris['data'][:50, 1]
x2 = iris['data'][50: 100, 0]
y2 = iris['data'][50:100, 1]

そして、図を作成します。

data1 = go.Scatter(x=x1,
                   y=y1,
                   mode='markers',
                   name='setosa'
                   )
data2 = go.Scatter(x=x2,
                   y=y2,
                   mode='markers',
                   name='versicolor')
go.Figure([data1, data2])

詳細は今後説明していきますが、xにはx軸のデータをyにはy軸のデータを設定し、modeで点グラフなのか線グラフなのかテキストを表示するのかを設定します。

そして、setonaとversicolorを違う点にしたいのでdata1とdata2に分け、go.Figureの引数にはこれらをリストにしたものを渡しています。

すると以下のようなグラフが作成されます。

Plotly Express

より簡単にグラフを描くためにPlotly ExpressというAPIがあります。

こちらは、Pandasのデータフレームを簡単に取り扱うことができます。

まずは、plotly.expressをインポートをします。

import plotly.express as px

データは、Plotly Expressから提供されているIrisデータを使います。

これは既にデータフレームの形になっています。

df = px.data.iris()

あとは、px.scatterで散布図を描くことができます。

x軸、y軸をそれぞれデータフレーム名で指定し、色を”species”と指定することで、”species”列の値により色を設定できます。

fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
fig.show()

すると以下のような散布図が作成されます。

カーソルを当てた際のテキスト情報も自動的に作成してくれます。

たったの2行(実質1行)でこのようなグラフを作成することができます。

まとめ

今回は簡単にPlotlyの概要を説明しました。

これだけではあまり良さがわからないと思いますので、これから少しずつ解説していきたいと思います。

是非Plotlyを使って、分析の高度化や見た目のよいグラフの作成に役立てていただければと思います。

なお、以下の投稿では有価証券報告書の内容をPlotlyで描画する、ということを行っています。

また、英語ですがUdemyのコースを紹介していますので、参考にしていただければと思います。

では、次回から詳しく解説していきたいと思います!




mm0824

システム開発会社や金融機関で統計や金融工学を使ったモデリング・分析業務を長く担当してきました。

現在はコンサルティング会社のデータ・サイエンティストとして機械学習、自然言語処理技術を使ったモデル構築・データ分析を担当しています。

皆様の業務や勉強のお役に立てれば嬉しいです。

mm0824をフォローする
plotly入門
mm0824をフォローする
楽しみながら理解する自然言語処理入門

コメント

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