探索的データ分析(EDA)において、データ構造、パターン、異常値を発見するために、より高速、インタラクティブにデータを可視化したいことがあります。
これまで、データ可視化にmatplotlibとseabornを利用していましたが、「データ可視化ライブラリー:plotly」を目にする機会も増えました。
目次
plotlyとは?
概要
plotlyは、JavaScript、D3.js、HTML、CSSをベースに開発されたインタラクティブなグラフの作成を可能とするオープンソース・ライブラリです。plotlyは、Python, R, Julia, Javascript, ggplot2, MATLAB, Dashなどで利用可能です。
plotlyで作成できるグラフは、線グラフ、散布図、地図チャート、バーグラフ、エラーバー, ボックスプロット、ヒストグラム、ヒートマップ、サブプロット、ポーラチャート、バブルチャートが挙げられます。
plotlyは、データサイエンス、データ分析、AI開発の仕事のサポートに十分すぎるほどパワフルかつ柔軟なライブラリです。
plotlyはApach Sparkからでも利用可能とのことです。(2) Spark環境下でもplotlyが使えるのはありがたいですね。
価格について
便利そうなplotlyですが、無料で利用できるんでしょうか?
plotlyは、MITライセンスのオープン・ソースソフトウェアです。Pythonでplotlyの利用は無料です。(3)
plotlyのインストール、利用にお金を払う必要はありません。登録なしに、plotlyのサービスを利用して、チャート、マップを作成・閲覧・配布可能です。オフラインでplotlyの利用は可能です。
しかしながら、オンラインで非公開なグラフを作るとき、高度な機能を追加したい場合は有料になります。
また、webアプリケーションを開発するため、Dashと呼ばれるwebベース分析アプリケーション開発のためのフレームワークを利用します。Dashを使用することで、plotlyのグラフを簡単に開発アプリケーションに組み込めます。
DashもMITライセンスを受けたオープンソース・ソフトウェアです。Dashも無料で利用できます。DashEnterpriseやChartStudioEnterpriseは商用製品となります。
Graph ObjectsとPlotly Express
plotlyが提供するplotly.graph_objects
とplotly.express
の違いは何か?結論として、両者の機能は同じです。
plotly.express
はGraph Objectsのトップに作成され、様々なタイプの図をplotly.graph_objects
より短いコードで簡単に作成するための関数を提供しています。
Plotly Expressの概要
Plotly Expressは、plotly.graph_objects.Figure
のインスタンスを返し、uppdate_layout
とadd_trace
で編集可能です。
Plotly Expressを利用すれば、以下のタイプの図を比較的短いコードで簡単に作成できます。
- 基本: 散布図, ライングラフ, 塗りつぶしグラフ, バーグラフ, ファネルチャート, ガントチャート
- 部分全体関係: パイチャート, サンバーストグラフ, ツリーマッピング, 氷柱チャート
- 一次元分布: ヒストグラム, ボックスプロット, バイオリンプロット, ストリップチャート, 経験的累積分布関数
- 二次元分布: ヒートマップ, 等高線
- 画像入力: 画像表示
- 3次元: 3d散布図, 3dライングラフ
- 多次元: 散布図行列, 平行座標, サンキーダイアグラム
- タイルマップ: 散布図, ライングラフ, コロプレスマップ, ヒートマップ
- 白地図: ジオ散布図, ジオ線図, ジオ階級区分図
- ポーラチャート: 散布図, ライングラフ, バーグラフ
- 三角グラフ: 散布図, ライングラフ
Graph Objectsの概要
Guraph Objectsは、plotly.graph_objects
モジュール(通常go
としてインポート)に含まれているクラスのインスタンスを指します。
plotly.graph_objects
とplotly.express
の機能が同じならば、plotly.graph_objects
はいつ使用するのでしょうか。
例えば、22年時点では、plotly.express
で3dメッシュやサブプロットグラフを描くことができません。
要するに、plotly.graph_objects
はplotly.express
で描けない複雑な図を描きたい時に使用します。
目的によりますが、まずは短いコードでグラフを描けるplotly.express
の使用が勧められます。
最後に、plotlyが如何にパワフルか伝えるため、公式から配信されている動画を紹介します。(SciPy 2021 conferenceより)
これはすごい!私もplotlyユーザになれるようplotlyを使ってみたい!
まとめ
この記事はplotlyについてまとめました。
- plotlyとは
- インタラクティブなグラフの作成を可能とするオープンソース・ライブラリ
- JavaScript, D3.js, HTML, CSSをベースに開発
- Python, R, Julia, Javascript, ggplot2, MATLAB, Dashで利用可能
- MITライセンスのオープン・ソースソフトウェア
- Pythonでplotlyの利用は無料
- plotlyでできること
- 線グラフ、散布図、地図チャート、バーグラフ、エラーバー, ボックスプロット、ヒストグラム、ヒートマップ、サブプロット、ポーラチャート、バブルチャートなどの作成
- Dashを利用すればplotlyのグラフを簡単に開発アプリケーションに組み込み可能
- Graph ObjectsとPlotly Expressの違い
plotly.express
:短いコードでインタラクティブな図を簡単に作成plotly.graph_objects
:plotly.express
で描けない複雑な図を作成
plotlyは扱っていてかなり面白いと思うので、引き続き勉強していきたいです。
この記事は以上です。最後まで読んで頂きありがとうございました。
参考資料
(2) Plot Data from Apache Spark in Python/v3
(3) plotly, Is Plotly for Python Free?
(4) plotly, Graph Objects in Python
(5) plotly, Plotly Express in Python
plotlyとは何でしょう?この記事は「plotlyの概要」についてまとめます。