企業財務情報をインタラクティブに可視化する Part2
Part2では可視化に使用するAltairの解説を行います。Altairの概要、基本的な使い方、最後に目的とする連動グラフの描画までを解説します。本記事では以下の順で記載していきます。
- Altairの概要
- Altairを利用したシンプルなグラフの描画
- 連動グラフの描画
では、始めていきましょう!実装は以下にまとめています。
Altairの概要
AltairはVega-LiteをPythonから扱うためのライブラリです。Vega-Liteは一般的な可視化描画のAPIから”Vega”という「可視化を記述する言語」を出力するライブラリです。データを扱うための言語がSQLとして、可視化にとってのSQLに近い存在を目指し開発されています。つまり、AltairはAltair => Vega-Lite => Vegaという流れで実行されます。Vega周辺のエコシステムは以下のようになっています。
- Vega
「可視化を記述する言語」。実装にはD3を用いている。 - Vega-Lite
Vegaを使用し描画を行うデータ描画ライブラリ。VegaとVega-LiteのExampleを見比べるとどの程度記述量に差異があるかわかります。 - Altair
PythonからVega-Liteを使用し描画するライブラリ。 - Lyra
Vega/Vega-Liteを使用しデータを可視化するGUI。商用のTableauに近いUI。 - Voyager
単にデータを見るだけでなく可視化して知見を得るための分析ツール。
Altairの背後に大きな構想とエコシステムがあることがわかります。開発してるのはUW Interactive Data Lab(idl)という研究グループです。
idlグループは可視化の歴史を率いてきたといっても過言ではありません。発端は1990年代のStanford Visualization Groupで、そこからTableauが生まれ、D3が生まれ、Trifactaが生まれ・・・と軽く眩暈がする成果を上げて現在ワシントン大学に至りVegaの開発を行っています。
そんじょそこらのD3ラッパーではないことがわかっていただけたと思います。安心して使えるライブラリと言えるでしょう。
Altairを利用したシンプルなグラフの描画
Altairを使用して描画を行ってみます。インストール/チュートリアルについては公式ページにまとまっているため割愛します。
Altairの基本的な使い方と思想についてはPyCon 2018の資料にまとまっています。
Altair(というかVega)は「宣言的な可視化(Declarative)」を目指しています。「x=10、y=1のところに赤いサークルを置く」みたいな逐次的な命令でなく(How)、「A列をx、B列をyとして散布図を書く(色は赤)」といった最終的にやりたいこと(What)を記述する方式です。上記スライドの34pはそれが良く表れていると思います。
- Chart(car): carデータを描画する
- mark_point: 散布図を描画する
- encode: carデータとmark_pointに必要なx、yをマッピングする
to_jsonを使用すると生成されたVegaを参照することができます。
描画の肝は”encode”処理になります。描画したいデータには実数値やカテゴリー変数など様々な種別のデータが含まれるためです。Altairでは、以下4タイプのデータ種別があり指定がない場合自動で判別してくれます。
- Q(quantitative): 定量的データ(実数値)
- N(nominal): カテゴリー変数(国名/地域名など)
- O(ordinal): 順列性のあるカテゴリー変数(離散値?)
- T(temporal): 年・月などの時間項目
詳細なチュートリアルがあるため、そこを見ると使い方がよくわかります。
Altairを利用した連動グラフの描画
最後に、目的としている連動グラフを描画しましょう。以下に解説があるためそのまま使用します。
コードは以下のようになります(短いので図で貼っています。詳細はGitHubリポジトリを参照ください)。
図にすると以下のような感じです。共通のbaseから派生して2つの図を描画しており、baseに設定されたselectorが派生先の図それぞれで作用するという仕組みになります。
かなり簡単にできたため正直拍子抜けしました。すごいぜAltair。
描画はいい感じにできたので、Part3では実際の財務データを描画してみようと思います。