目标:将文本附加到d3强制布局中的每个节点
BUG:文本被附加到对象(我认为,请参阅控制台),但不会显示在屏幕上
这里是jsfiddle。
node.append("svg:text")
.text(function (d) { return d.name; }) // note that this works for
// storing the name as the id, as seen by selecting that element by
// it's ID in the CSS (see red-stroked node)
.style("fill", "#555")
.style("font-family", "Arial")
.style("font-size", 12);
我对任何想法都非常感激。
答案 0 :(得分:0)
您无法将svg文本添加到svg圈子。您应首先为每个节点创建一个svg g对象(g代表组),然后为每个g元素添加一个圆和一个文本,如下面的代码所示:
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter().append("g");
var circle = node.append("circle")
.attr("class", "node")
.attr("id", function (d) { return d.name; })
.attr("r", 5)
.style("fill", function (d) {
return color(d.group);
});
var label = node.append("svg:text")
.text(function (d) { return d.name; })
.style("text-anchor", "middle")
.style("fill", "#555")
.style("font-family", "Arial")
.style("font-size", 12);
当然,滴答功能应该相应更新:(也是css一点点)
circle.attr("cx", function (d) {
return d.x;
})
.attr("cy", function (d) {
return d.y;
});
label.attr("x", function (d) {
return d.x;
})
.attr("y", function (d) {
return d.y - 10;
});
这是jsfiddle。