前回に引き続き,ツリー構造のデータを可視化する「ツリーマップ」の手法を扱います。今回は,グラフィックスAPIのJava2Dを使用して,実際にツリーマップを描画し,画像ファイルへ出力を行います。
ソースコードのダウンロード
今回作成するプログラムのソースコードは,こちらから一括してダウンロードすることができます。ZIPファイルを展開して生成されるフォルダを,プロジェクトとしてNetBeansに読み込むことも可能です。
Java2Dによるグラフィックス
Javaには,Java2Dと呼ばれる2次元グラフィックスAPIが標準で付属しています。Java2Dの仕様は大変充実しており,例えば以下のような機能がサポートされています。
- 基本図形の描画
- テキストの描画
- パスの作成
- 交差判定
- 座標系の拡大・縮小・回転
- アンチエイリアス
- グラデーション
- 半透明描画
- 画像ファイルの入出力
視覚的に美しい情報可視化を行うにあたっては,高機能なグラフィックライブラリの使用が必須となります。Java2Dは,その有力な選択肢の一つとなるでしょう。
色集合のツリーマップ
今回は,Java2Dを用いて,色データの集合を対象としたツリーマップの描画に挑戦します。ツリーマップは,以下の要件にしたがって作成することにします。
- 第2回のアルゴリズムにしたがって,色データ集合のクラスタリングを実行し,クラスタツリーを作成する。
- クラスタリングの距離関数には,第3回のWard法を使用する。
- 第3回のアルゴリズムにしたがって,ツリーマップの領域分割を行う。
- ツリーマップ領域の面積比率は,ランダムに決定する。
- ツリーマップの各領域は,ツリーノードに対応する色で塗りつぶす。
- ツリーマップの各領域は,ツリーノードの深さに応じた太さで輪郭を描画する。ルートノードを最も太く,末端ノードに近づくほど細く描画する。
この結果出力されるイメージは,例えば図1のような見た目になります。分割された各領域の面積,色,そして輪郭の太さによって,データの全体的な構造を直感的に理解することができます。


