論文メモ: Bubble Treemaps for Uncertainty Visualization
はじめに
2018年の「IEEE Transactions on Visualization and Computer Graphics」の中に、「Bubble Treemaps」という面白いデザインのグラフを提案している論文を見つけました。
この「Bubble Treemaps」という手法は、木構造のデータを空間的に効率よく表現できるもので、関連性の高いノードはより近くに配置でき、同じ階層のノードは等高線を使ってグルーピングすることができます。
特徴
力学モデルのグラフ描画
ノード間に余計な空間が無く、ギュッとコンパクトに配置できるのは、力学モデルのグラフ描画を利用しているからです。
力学モデルによるグラフ描画は様々な手法で使われていますが、今回の「Bubble Treemaps」では、ノード間にバネの力が働き、お互いに近づこうとしたり、反発し合ったりして、位置関係が決定されます。
具体的には、それぞれノードがお互いに与える力を計算する処理、それを元にノードの位置を更新する処理を繰り返して、力が均衡したところで処理を終えます。
そのため、このような力学的なグラフ描画は、ノード数が多くなるほど計算量が大きくなってしまうのが欠点です。
この論文によると、「Bubble Treemaps」の計算量はO(n2)らしいです。
木構造データの階層を等高線でグルーピングしつつ、ノード間の距離を考慮して配置できるのは面白いですね。
「不確かさ」の可視化
この論文の著者によると、これまでの木構造のグラフでは、さらに追加で新しい要素を表現することは難しかったようです。
例えば、どのような要素かというと、この論文のタイトルにもある「不確かさ (Uncertainty)」です。
ノードや階層構造が持つ「不確かさ」のような追加要素を可視化するために、この「Bubble Treemaps」上では、ノードや等高線を波線・破線・点線などで表すようにしています。
この「不確かさ」のような新しい要素を使うシチュエーションがあまり浮かばなかったのですが、見つけたときには有効利用したいものです。
実装
力学モデルによるグラフ描画手法を自力で実装した場合には、定常状態の判定部分を工夫しないと、バネの振動が止まらなくなって苦労します。
しかし、GitHubにグラフ描画ライブラリとして有名な「D3.js」を用いたJavaScriptの実装が公開されていますので、これを使うことですぐに「Bubble Treemaps」を試すことができます。
また、この実装を使ったサンプルページも公開されているので、こちらのページにデータを入れて、素敵なグラフを取得しても良いかもしれません。
適用例
論文内では、いくつかのデータセットを使って、「Bubble Treemaps」と従来のグラフ描画手法の比較をしていました。
下に表したのは、データの可視化ソフトである「Flare」のパッケージ情報に、「Bubble Treemaps」と従来の「Squarified Treemaps」を適用したグラフです。
2つの手法を比較しても、随分印象が違うことがわかります。
お互いに良い点はあると思いますが、「Squarified Treemaps」は整然と整理されて、与えられた面積を使い切ることができ、「Bubble Treemaps」のほうはグループ間の近さと階層構造を表現するのが上手いように思います。
まとめ
今回の論文メモは、斜め読みした内容でしたので、簡単なご紹介となりました。
もし実際に使ってみたい方は、論文の中にLimitationsなどの項目もありますので、用法・用量を守って、正しくお使いください。
また、このようなデータの可視化技術は、データマイニング技術と共に研究・利用されてきました。
このようなグラフを紹介しているページを覗くと、他にも面白いグラフを見つけることができるので、ぜひチラ見して行ってほしいです。
参考文献
今回紹介した論文
Bubble Treemapsの実装とサンプルページ
- GitHub - grtlr/bubble-treemaps: Implementation of Bubble Treemaps for Uncertainty Visualization.
- Bubble Treemaps for Uncertainty Visualization - Jochen Görtler (@grtlr)
その他のグラフを紹介しているサイト