plotly とは
plotly はデータ可視化のためのプラットフォームです。
基本的に無料で利用することが可能です。
(可視化結果の
- 入出力データのプライベートなクラウドホストや共有
- SVG, PDF, EPS 形式での保存
もしくは「APIを頻繁に叩く」といった場合は有料プランへの加入が必要です。詳細は後述します。)
その可視化結果はインタラクティブに操作可能であり
- 棒グラフ
- 地図
- 箱ひげ図
- ヒストグラム
といった図に対し
- マウスオーバーでのデータ内容の表示
- ズーム、パン
が可能、という特徴があります。
またデータ可視化における主要言語
- R
- Python
- MATLAB
のクライアントが提供されており、この他にも
- Excel
- Julia
- Igor
- Spotfire
- Nodejs
- Ruby
- Go
- F#
- Arduino や Rasberry PI のようなハードウェア
用にplotlyのAPIを叩くライブラリ、実例が提供されています。
APIについて
前述した「APIを頻繁に叩く場合は有料プランへの加入が必要」の詳細ですが
上記のクライアントリストの内
- APIを叩くもの (リモートのplotlyのサーバとの通信を行う)
- ローカルの plotly のjavascript ライブラリ「plotly.js」を利用するもの (セルフホスト)
があり後者の場合はどれだけ使っても無料です。
後者にとって大きかったのが今年11月17日に発表された plotly.js のオープンソース化 です。
plotly.js のオープンソース化
plotly.js のオープンソース化が行われることで下記の実現が可能になりました。
- javascriptライブラリのフル機能の利用 (かつては3Dプロットは有料だった)
- クライアントからのplotly.jsの完全ローカル利用 (API制限を気にする必要がなくなった)
ソースコードはgithubで公開されています。
https://github.com/plotly/plotly.js
RStudio 内での plotly を用いた可視化
plotly.js のオープンソース化の恩恵の実例として「RStudio 内での plotly を用いた可視化」を行ってみます。
下記の3ステップを行ってみてください。
- R でライブラリ名 plotly をインストール
- オフラインにする (APIを叩くには勿論ID情報などが要るかと思うのですが絶対にリモートサーバをcallしていないことを確認するために)
- 下記のコードをRStudioで実行
library(plotly)
plot_ly(z = volcano, type = "surface")
下記画像のような可視化が(plotlyのサーバをcallすることなく)オフラインでも実現できているかと思います。
まとめ
- plotly の概要
- plotly.js のオープンソース化とその恩恵を示す例
を中心にplotlyの紹介をしました。
R や Python から利用でき、インタラクティブな可視化を実現するものというと
これまでは「オープンソースである」という点で plotly ではなく bokeh を利用されていた方もいるのではないでしょうか。
例に示したように plotly は bokeh がまだサポートしていない3Dプロットの可視化もできます。
plotly.js を活用していくことで可視化分野が今後さらにアクティブになることを期待しています。