動的なグラフ描画ライブラリ「plotly」とは。expressとgraph_objectsの違いも紹介

plotlyのアイキャッチ IT

はじめに

データを視覚化する際、見やすくてインタラクティブなグラフが作れると非常に便利です。Pythonのplotlyは、そんな要望にぴったりです。

Jupyter Notebookやウェブ上での使用も簡単なので、データサイエンスや可視化プロジェクトで活用されます。今回は、Pythonのplotlyを使って簡単にグラフを作成する方法を紹介します。

plotlyは、pythonを用いた可視化ツールとなりますが、Matplotlibを含めデータの可視化は非常に重要です。これらについて理解が難しい場合は、経験豊富な方とマンツーマンで学習していくのもオススメです。

plotlyとは

plotlyは、インタラクティブなグラフをPythonで簡単に作成できるオープンソースのライブラリです。

plotlyの強みは、クリックやホバーによる動的なインタラクションが可能である点にあります。複雑なデータセットでも見やすく整理できるため、データアナリストやデータサイエンティストにとって強力なツールです。

下記動画をご覧ください。

matplotlibのように描画できることに加え、拡大/縮小などを簡単に行うことができ、注目したいデータをすぐに確認することができます。

plotlyのインストール

まず、plotlyをインストールしましょう。以下のコマンドでインストールが可能です。

pip install plotly

plotlyの使い方

まずはデータを準備します。今回はカルフォルニア住宅データのデータセットとします。

from sklearn.datasets import fetch_california_housing
import pandas as pd

# カルフォルニア住宅データを活用します
california_housing = fetch_california_housing()
data = pd.DataFrame(california_housing.data, columns=california_housing.feature_names)
data['Price'] = pd.Series(california_housing.target)

次にplotlyの描画に使うモジュールをimportしていくのですが、大きく2種類があります。

  • plotly.express
  • plotly.graph_objects

これら2種類について、プログラムの書き方は類似していますが、これらについて紹介していきます。

plotly.express

plotly.expressの書き方はこちらになります。

図を作成し、レイアウトを調整しています。プログラムの書き方的にもかなり直感的で分かりやすいと思います。

import plotly.express as px

# 散布図を作成します
fig = px.scatter(
    data_frame = data,
    x="AveRooms",
    y="AveBedrms"
)

# レイアウトを調整します
fig.update_layout(
    xaxis_title="平均部屋数",
    yaxis_title="平均寝室数",
    title={
        'text' : "部屋数と住宅価格の関係",
        'x':0.5
    }
)

fig.show()

plotly.graph_objects

plotly.graph_objectsの書き方はこちらになります。

plotly.expressとほとんど同じですね。

import plotly.graph_objects as go

# 散布図を作成します
fig = go.Figure(
    go.Scatter(
        x=data["AveRooms"],
        y=data["AveBedrms"],
        mode="markers"
    )
)

# レイアウトを調整します
fig.update_layout(
    xaxis_title="平均部屋数",
    yaxis_title="平均寝室数",
    title={
        'text' : "部屋数と住宅価格の関係",
        'x':0.5
    }
)

fig.show()

どちらも下記の同じグラフが出力されます。

plotly.expressとplotly.graph_objectsの使い分け

下記を見るとplotly.expressはgraph_objectsインスタンスを返しているそうです。そのため、実質はgraph_objectsを使っているようなことになります。

また、3Dプロットなどがplotly.expressで使えないようなので、plotly.graph_objectsを使う方が無難だと考えられます。

When to use Graph Objects vs Plotly Express

The recommended way to create figures is using the functions in the plotly.express module, collectively known as Plotly Express, which all return instances of plotly.graph_objects.Figure, so every figure produced with the plotly library actually uses graph objects under the hood, unless manually constructed out of dictionaries.

That said, certain kinds of figures are not yet possible to create with Plotly Express, such as figures that use certain 3D trace-types like mesh or isosurface. In addition, certain figures are cumbersome to create by starting from a figure created with Plotly Express, for example figures with subplots of different types, dual-axis plots, or faceted plots with multiple different types of traces. To construct such figures, it can be easier to start from an empty plotly.graph_objects.Figure object (or one configured with subplots via the make_subplots() function) and progressively add traces and update attributes as above. Every plotly documentation page lists the Plotly Express option at the top if a Plotly Express function exists to make the kind of chart in question, and then the graph objects version below.

引用元:plotly

plotlyで描ける種類

  • 散布図(px.scatter / go.Scatter)
  • 折れ線(px.line / go.Scatter(mode = ‘lines’))
  • 棒グラフ(px.bar / go.Bar)
  • 箱ひげ図(px.box / go.Box)

このように数多くありますが、引数含め使用する際は下記の公式サイトを確認するようにしてください。

Plotly
Plotly's

plotlyとmatplotlibの使い分け

plotlyと合わせて、描画ライブラリとしてはMatplotlibがあります。それぞれ特徴が異なるため、用途や目的に応じて使い分けることが重要です。

ここでは、plotlyとMatplotlibの違いを詳しく見ていきます。

  • plotly:ウェブベースのデータアプリケーション、インタラクティブなレポート、Jupyter Notebookでのデータ分析の活用に有効。
  • Matplotlib:静的な画像やプレゼンテーション資料、論文に掲載するグラフなど、インタラクションが不要なグラフを作成する際に向いています。

データを見る人が静的にみるか、動的にみるかで使い分けるのが良いかと思います。

下記の記事にてMatplotlibのサンプルグラフやコードをまとめているので、併せて確認ください。

グラフの特徴と用途を学ぶ。「Python」と「Matplotlib」で作るデータ分析グラフ
はじめにグラフは、データを直感的に理解しやすくするために非常に重要なツールです。特に、複雑な数値や膨大なデータを扱う際には、グラフを用いることで傾向や特徴を視覚的に把握できます。本記事では、Pythonで最も人気のあるグラフ作成ラ...

まとめ

データをplotlyで視覚化することで、データの関係性や特徴量の分布をインタラクティブに観察できます。

様々なデータにおいて、プログラマーだけでなく、グラフをもらった方もインタラクティブな分析をできることで細かな確認ができるようになります。Matplotlibなどと合わせて、場面に沿った活用をすることが良いと思います。

plotlyを学ぶのにオススメの方法

書籍:Python インタラクティブ・データビジュアライゼーション入門

Plotlyを体系的に学びたい方には以下の書籍がオススメです。Dashと合わせたWebアプリの開発方法も記載されているので、実ビジネスへの活用方法まで学ぶことができます。

スクール:現役データサイエンティストに教えてもらう

可視化作業はデータ分析時に必要になることが多いです。ただ、どのようにやるのが正しいのかを判断するには適切なメンターなどがいた方が安心です。スクールなどに入り、アドバイスしてもらいながら進めるのも良いでしょう。

データサイエンティストになるためにオススメのスクール5選。
はじめに近年、多くの企業でデータ活用が進み、AIやデータ分析への期待がますます高まっています。そのため、データサイエンティストは現代のビジネス界で最も需要のある職業の一つです。データ分析、機械学習、統計学、プログラミングなど多岐に...

コメント

Copied title and URL