具体例で学ぶ!情報可視化のテクニック

第4回 ツリーマップによる木構造の可視化(後編)

この記事を読むのに必要な時間:およそ 3.5 分

前回に引き続き,ツリー構造のデータを可視化する「ツリーマップ」の手法を扱います。今回は,グラフィックスAPIのJava2Dを使用して,実際にツリーマップを描画し,画像ファイルへ出力を行います。

ソースコードのダウンロード

今回作成するプログラムのソースコードは,こちらから一括してダウンロードすることができます。ZIPファイルを展開して生成されるフォルダを,プロジェクトとしてNetBeansに読み込むことも可能です。

Java2Dによるグラフィックス

Javaには,Java2Dと呼ばれる2次元グラフィックスAPIが標準で付属しています。Java2Dの仕様は大変充実しており,例えば以下のような機能がサポートされています。

  • 基本図形の描画
  • テキストの描画
  • パスの作成
  • 交差判定
  • 座標系の拡大・縮小・回転
  • アンチエイリアス
  • グラデーション
  • 半透明描画
  • 画像ファイルの入出力

視覚的に美しい情報可視化を行うにあたっては,高機能なグラフィックライブラリの使用が必須となります。Java2Dは,その有力な選択肢の一つとなるでしょう。

色集合のツリーマップ

今回は,Java2Dを用いて,色データの集合を対象としたツリーマップの描画に挑戦します。ツリーマップは,以下の要件にしたがって作成することにします。

  • 第2回のアルゴリズムにしたがって,色データ集合のクラスタリングを実行し,クラスタツリーを作成する。
  • クラスタリングの距離関数には,第3回のWard法を使用する。
  • 第3回のアルゴリズムにしたがって,ツリーマップの領域分割を行う。
  • ツリーマップ領域の面積比率は,ランダムに決定する。
  • ツリーマップの各領域は,ツリーノードに対応する色で塗りつぶす。
  • ツリーマップの各領域は,ツリーノードの深さに応じた太さで輪郭を描画する。ルートノードを最も太く,末端ノードに近づくほど細く描画する。

この結果出力されるイメージは,例えば図1のような見た目になります。分割された各領域の面積,色,そして輪郭の太さによって,データの全体的な構造を直感的に理解することができます。

図1

図1 treemap

著者プロフィール

浜本階生(はまもとかいせい)

1981年生まれ。栃木県出身。東京工業大学情報工学科卒業。技術やアイデアの組み合わせから面白いソフトウェアを生み出したいと日々考えている。現在,ブログの解析および視覚化の試みとして「TopHatenar」「Blogopolis」を開発,運用中。

URLhttp://d.hatena.ne.jp/kaiseh/

コメント

  • ランラム

    >> // ランラムな色データを100個作成

    「ランダム」ですか?

    Commented : #1  通りすがり (2008/09/28, 16:42)

コメントの記入