d3.js を使用して視覚化する一連のデータがあります。バブルの形でデータ ポイントを表しています。バブルの構成は次のとおりです。
var dot = svg.selectAll("g")
.data(data)
.enter()
.append("g");
dot.append("circle")
.attr("class", "dot")
.attr("cx", function(d) { return xp(x(d)); })
.attr("cy", function(d) { return yp(y(d)); })
.style("fill", function(d) { return colorp(color(d)); })
.attr("r", function(d) { return radiusp(radius(d)*2000000); });
dot.append("text")
.attr("x", function(d) { return xp(x(d)); })
.attr("y", function(d) { return yp(y(d)); })
.text(function(d) { return d.name; })
xp、yp、colorp、radiusp は次のように定義されます。
var xp = d3.scale.log().domain([300, 1e5]).range([0, width]),
yp = d3.scale.linear().domain([10, 85]).range([height, 0]),
radiusp = d3.scale.sqrt().domain([0, 5e8]).range([0, 40]),
colorp = d3.scale.category10();
この時点で、バブルはその位置 (位置は xp と yp によって定義される) で静的に表示されますが、バブルのサイズは基本的に radiusp から取得され、色は colorp によって定義されます。
今、私はこの例とまったく同じようにそれらを示しています: http://bl.ocks.org/mbostock/4063269
私が必要とするのは、それらを次の形式で表示することです: http://jsfiddle.net/andycooper/PcjUR/1/
つまり、重力関数を使用してパックする必要があり、ある程度の電荷を持ち、引きずり、ある程度互いに反発することができます。d3.layout.force() を使用する方法があることがわかりますが、実際にはそれをこれに統合することはできません..正しいパス、実際の例、またはヒントを提案していただければ、本当に感謝しています。ありがとうございました。