var data_set = { children: [ {name:"aaa", val:58}, {name:"bbb", val:88}, {name:"ccc", val:48}, {name:"ddd", val:73}, {name:"eee", val:81}, {name:"fff", val:31} ] } ;
var width=600, height=300; //描画範囲 var bubble = d3.pack() // d3.pack()の関数を利用 .size([width, height]) .padding(1.5) ; //バブル間の間隔
var nodes = d3.hierarchy( data_set ) //d3.hierarchy関数の使用 .sum(function(d){ return d.val }) ; // バブルの半径: val要素使用
// d3.packのdescendantsメソッドですべてのバブル描画データを変換 var bubble_data = bubble(nodes).descendants() ;
var no_root_bubble = bubble_data.filter( function(d){ return d.parent != null ; // parentがないデータを返す } ) ;
// 変換されたバブルデータにある半径の最大値/最小値の割り出し var max_val = d3.max(no_root_bubble, function(d){ return d.r ;}); var min_val = d3.min(no_root_bubble, function(d){return d.r ; }); // 色のスケール作成 var color_scale = d3.scaleLinear() .domain( [min_val, max_val] ) .range(d3.schemeCategory10 ); // d3で10色を生成
var data_set = { children: [ {name:"aaa", val:58}, {name:"bbb", val:88}, {name:"ccc", val:48}, {name:"ddd", val:73}, {name:"eee", val:81}, {name:"fff", val:31} ] } ; var width=600, height=300; var bubble = d3.pack() .size([width, height]) .padding(1.5) ; var nodes = d3.hierarchy( data_set ) .sum(function(d){ return d.val }) ; var bubble_data = bubble(nodes).descendants() ; var no_root_bubble = bubble_data.filter( function(d){ return d.parent != null ;} ) ; var max_val = d3.max(no_root_bubble, function(d){ return d.r ;}); var min_val = d3.min(no_root_bubble, function(d){return d.r ; }); var color_scale = d3.scaleLinear() .domain( [min_val, max_val] ) .range(d3.schemeCategory10 ); var font_scale = d3.scaleLinear() .domain([min_val, max_val]) .range([9, 28]); var bubbles = d3.select("#content") .selectAll(".bubble") .data(no_root_bubble) .enter() .append("g") .attr("class", "bubble") .attr("transform", function(d){ return "translate("+d.x+","+d.y+")" ;}) ; bubbles.append("circle") .attr("r", function(d){ return d.r }) .style("fill", function(d,i){ return color_scale(d.r); }); ; bubbles.append("text") .attr("text-anchor", "middle") .attr("dominant-baseline", "central") .text(function(d){ return d.data.name ; }) .style("font-size", function(d){ return font_scale(d.r) ; }) ;