企業財務情報をインタラクティブに可視化する Part2

piqcy
programming-soda
Published in
Oct 17, 2020

Part2では可視化に使用するAltairの解説を行います。Altairの概要、基本的な使い方、最後に目的とする連動グラフの描画までを解説します。本記事では以下の順で記載していきます。

  1. Altairの概要
  2. Altairを利用したシンプルなグラフの描画
  3. 連動グラフの描画

では、始めていきましょう!実装は以下にまとめています。

Altairの概要

AltairVega-LiteをPythonから扱うためのライブラリです。Vega-Liteは一般的な可視化描画のAPIから”Vega”という「可視化を記述する言語」を出力するライブラリです。データを扱うための言語がSQLとして、可視化にとってのSQLに近い存在を目指し開発されています。つまり、AltairはAltair => Vega-Lite => Vegaという流れで実行されます。Vega周辺のエコシステムは以下のようになっています。

Vega Ecosystem
  • Vega
    「可視化を記述する言語」。実装にはD3を用いている。
  • Vega-Lite
    Vegaを使用し描画を行うデータ描画ライブラリ。VegaVega-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の開発を行っています。

idlの歴史

そんじょそこらのD3ラッパーではないことがわかっていただけたと思います。安心して使えるライブラリと言えるでしょう。

Altairを利用したシンプルなグラフの描画

Altairを使用して描画を行ってみます。インストール/チュートリアルについては公式ページにまとまっているため割愛します。

Altairの基本的な使い方と思想についてはPyCon 2018の資料にまとまっています。

Altair(というかVega)は「宣言的な可視化(Declarative)」を目指しています。「x=10、y=1のところに赤いサークルを置く」みたいな逐次的な命令でなく(How)、「A列をx、B列をyとして散布図を書く(色は赤)」といった最終的にやりたいこと(What)を記述する方式です。上記スライドの34pはそれが良く表れていると思います。

Altairの可視化
  • 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では実際の財務データを描画してみようと思います。

--

--

piqcy
programming-soda

All change is not growth, as all movement is not forward. Ellen Glasgow