我使用D3.js生成树状图,用户可以看到结果。但是,为了保持显示清洁,我希望父节点尽可能简单(没有文字,没有圆圈)。
这是当前显示数据的方式:http://i.imgur.com/Cz52Fhl.png
这是我希望如何展示的一个例子(方向无关紧要,重要的是内部节点没有文字或圆圈):http://i.imgur.com/Oo2A0b7.png
代码......
// Compute the new tree layout.
var nodes = tree.nodes(root).reverse(),
links = tree.links(nodes);
// Normalize for fixed-depth.
nodes.forEach(function(d) { d.y = d.depth * 130; });
// Update the nodes…
var node = svg.selectAll("g.node")
.data(nodes, function(d) { return d.id || (d.id = ++i); });
// Enter any new nodes at the parent's previous position.
var nodeEnter = node.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
.on("click", click);
nodeEnter.append("circle")
.attr("r", 1e-6)
.style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });
nodeEnter.append("text")
.attr("x", function(d) { return d.children || d._children ? -10 : 10; })
.attr("dy", ".35em")
.attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
.text(function(d) { return d.canonical; })
.style("fill-opacity", 1e-6);
答案 0 :(得分:4)
您是否希望能够在叶子节点(最右侧的节点)旁边添加标签,而没有任何中间节点的标签?
如果是,则有一个实例:http://bl.ocks.org/widged/5150104
节点是内部还是叶子类型由代码的这一部分定义
.enter().append("svg:g")
.attr("class", function(n) {
if (n.children) {
return "inner node"
} else {
return "leaf node"
}
})
以后
var endnodes = vis.selectAll('g.leaf.node')
.append("svg:text")
... skipping attributes ...
.text(function(d) { return d.data.name; });