説明
ツリーマップに独自の背景色を付けるには、あらかじめ配列にカラー名や値一覧を入れておきます。色を変えるためにカウンタ変数を用意しておきます。あとは、背景色を指定する際に関数を呼び出します。関数内では配列内のカラーをカウンタ変数を利用して返すようにします。カウンタ変数は1ずつ増やしていきます。なお、この場合親ノードの場合もカウンタ変数の値が増えていくので、親ノード分のカラーも用意しておく必要があります。
これ以外の説明については
こちらのページを参照してください。
HTMLソース
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>D3.js サンプル</title>
<link rel="stylesheet" href="css/main.css">
<style>
#myGraph {
position: relative;
width : 480px;
height : 300px;
}
</style>
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
<h1>D3.jsサンプル</h1>
<div id="myGraph"></div>
<script src="js/sample.js"></script>
</body>
</html>
JavaScriptコード
// ファイル名とファイルサイズのデータ
var fileList = {
"name": "root_dir",
"children": [
{
"name": "sub_dir_A",
"children": [
{
"name": "sub_dir_B",
"children": [
{ "name": "ファイル A", "size": 5000 },
{ "name": "ファイル B", "size": 3000 },
{ "name": "ファイル C", "size": 1000 }
]
},
{
"name": "sub_dir_C",
"children": [
{ "name": "ファイル D", "size": 800 },
{ "name": "ファイル E", "size": 200 }
]
}
]
}
]
}
// 色を定義する
var colorList = ["#ddd", "#eee", "#f99", "#9cf", "#f9f", "#ff9", "green", "red", "cyan"];
// 色を表示するためのカウンタを用意
var count = 0;
// Treemapレイアウトにする
var treemap = d3.layout.treemap()
.size([480, 300]) // 横幅480px, 縦幅300px
.value(function(d) { return d.size; }); // sizeプロパティの値をデータ値とする
// #myGraphにTreemapを描画する
d3.select("#myGraph")
.datum(fileList) // データを割り付け
.selectAll("div") // divに表示するボックスを割り当てる
.data(treemap.nodes) // Treemapのノードを対象に処理
.enter()
.append("div") // div要素を追加
.style("left", function(d) { return d.x + "px"; }) // 表示する座標と幅などを設定
.style("top", function(d) { return d.y + "px"; })
.style("width", function(d) { return d.dx + "px"; })
.style("height", function(d) { return d.dy + "px"; })
.style("background", function(d){
count = count + 1; // 色の参照番号を1つ増やす
return colorList[count]; // あらかじめ用意された配列内のカラーを返す
})
.style("position", "absolute")
.style("overflow", "hidden")
.style("border", "solid 2px white")
.text(function(d) {
if (d.children){ return ""; } // 子ノードがある場合は親ノードの名前を表示しない
return d.name; // 名前を返す
});