Complex Data Visualization with JavaScript: Part 1
時代はますます何でもWeb上、と言うかブラウザ上へ移行してます。データ可視化と言う分野も例外ではないです。以前はヒストグラムを描くとか円グラフを表示するとかのシンプルなものはともかく、それ以上に複雑なデータの可視化を行う場合は、Flashで作り込むとか、Javaでアプレットを作るとか、そう言った作業が必要でした。そのためのツールキットの代表例としてはPrefuse等があります。
TreeView Demo by Jeffrey Heer:

しかし、近年の第二次ブラウザ戦争(HTML5への対応やJavaScriptの実行速度競争など。第一次はIE vs Netscape)のおかげで、クライアント側のテクノロジが飛躍的に進化し、JavaScript実行のパフォーマンスが向上したり、GPUの恩恵を描画で受けられたりと、特にマルチプラットフォームのサポートを求められる事の多いデータ可視化系プロジェクトでは、ブラウザ上でのデータ可視化アプリケーションの実装は魅力的な選択肢になりつつあります。以下はそう言った用途に使えるライブラリのまとめです。
1. D3.js (Data-Driven Documents)

比較的良く使われる手法が手広く実装されているツールキット。円グラフや折れ線グラフほど一般的ではないが、可視化の世界では標準的な手法として使われている以下のようなものが予め実装されているので、少ないコード量で様々な描画ができる。
- Force-Directed Graph
- Treemap
- Chord Diagram
- Tree
2. JavaScript InfoVis Toolkit

D3.jsに似ているが、グラフ(ネットワーク)の描画と、インタラクティブ性に力を入れている。例の中に様々なグラフの表示例があるので、小規模なネットワーク図を描いたりするのは簡単にできる。
3. PhiloGL

上のツールキットと同じ作者によるWebGLを利用したライブラリ。どちらかと言うと、上記二つよりも実験的性質が強く、即実用的な図を描くためのものと言うより、WebGLを使って何か可視化アプリケーションを作りたいときに使うbuilding blockと言った趣き。
4. Raphaël


SVGベースのシンプルな描画ライブラリ。インタラクティブなチャートを描いたりするのに向いている。
5. Processing.js
Javaのバージョンが有名なメディアアート向けプログラミング環境のJavaScript版。これは可視化ライブラリと言うより簡単な描画のためのライブラリと言う色合いが強いので、複雑な可視化機能を自分で実装したいと言うような場合に向いている。Sketchpadと言うブラウザ上でダイナミックにProcessing.jsのコードを実行できる環境があり、そこに様々な人々が作ったサンプルが大量にあるので、その辺りを参考にするのが思い通りのものを作る近道。
Transversal Lines (2011) by Joao Martinho Moura:

6. Three.js



上記のProcessing.jsの考えをさらに押し進めたような最近活発に開発されているフレームワーク。HTML5のcanvas、WebGL、SVG使ったレンダリングが可能で、三次元空間の活用も積極的に推奨されている。元々可視化のために作られたものではないので、ゲームなど、広く応用ができる反面、実用的なものを作るにはそれなりに経験が必要。今後の注目株。
以上、簡単なまとめ。各サイトのサンプルを試していただくと分かるように、巨大なデータを一気に大画面で表示してグリグリ動かす、とか言う用途以外はかなりブラウザで行けてしまう時代になりつつあります。従って、JavaScriptが奇麗に書けるスキルがこの分野では必須になりそうな雰囲気です。
番外編: Cytoscape Web 2

手前味噌で申し訳ないが、上記のような流れを受けて、我々も実験的にjQueryのプラグインとしてCytoscapeの機能サブセットを実装している。興味のある方はお試しを。