私はd3.forceを使用してノードをセットアップし、各ノードを接続するリンクを持っています。円をノードとして使用している場合は、すべてうまく機能します。
var nodes = [{ title: "ABC", group: 1 }, { title: "DEF", group: 1 }, { title: "Blah", group: 1 }];
var links = [{ source: 0, target: 1 }, { source: 0, target: 2 }];
var force = d3.layout.force()
.charge(-120)
.linkDistance(function(d) {
console.log(d);
return 250 * Math.random() + 100;
})
.size([r, r]);
force.links(links)
.nodes(nodes)
.start();
var link = svg.selectAll("line.link")
.data(links)
.enter()
.append("line")
.attr("class", "link")
.style("stroke-width", 1);
var node = svg.selectAll("circle.node")
.data(nodes)
.enter()
.append("circle")
.attr("class", "node")
.attr("r", 15)
.call(force.drag);
ただし、「g」を使用するようにノードを変更すると、機能しなくなります。
var node = svg.selectAll("g.node")
.data(nodes)
.enter()
.append("g")
.attr("class", "node")
.attr("r", 15)
.call(force.drag);
var circle = node.append("circle")
.attr("fill", function(d) {
var b = Math.floor(255 * Math.random()),
rgba = "rgba(0, 0, " + b + ", 0.7)";
return rgba;
})
.attr("r", 15);
円がg要素に追加されているのを見ることができますが、それらは本来あるべき場所ではなく、リンクによって接続されていません。
テキストを追加できるように、ノードとして「g」要素を使用したいと思います。誰かがこれについて何か洞察を持っていますか?
または、「円」要素にテキストを追加する方法がある場合。私もそれを受け入れています。
ありがとう!