在D3 v4树形图中隐藏根节点和边

时间:2017-09-14 21:51:38

标签: d3.js

对于以下Fiddle我想隐藏根节点。任何帮助表示赞赏,查看代码请查看小提琴。

我想我会做类似以下的事情,但我不确定如何/在何处实施它:

if (d.depth > 0) {
 ...node is drawn
}

下图: enter image description here

1 个答案:

答案 0 :(得分:4)

不绘制不是“以零不透明度绘制”或“隐藏显示”。它实际上没有附加元素。

因此,最简单的选择是将其从数据数组中删除。只需过滤掉第一个节点:

nodes = nodes.filter(function(d){
    return d.depth != 0;
})

由于0是假的,这与以下相同:

nodes = nodes.filter(function(d){
    return d.depth;
})

并过滤掉所有链接:

links = links.filter(function(d){
    return d.depth != 1;
})

这是您更新的小提琴:https://jsfiddle.net/wa21csbc/

此外,由于这些元素不再被绘制,您可以将dataviz移动到左侧,从而占用空的SVG空间。那个空间就在那里,因为我们在 d3.tree()计算了位置后过滤掉了第一个节点