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

D3.js 在D3 v4树形图中隐藏根节点和边,d3.js,D3.js,对于以下内容,我想隐藏根节点。感谢您的帮助,要查看代码,请查看小提琴 我想我会做如下事情,但我不确定如何/在何处实施: if (d.depth > 0) { ...node is drawn } 下图: 不绘制它不是“以零不透明度绘制”或“隐藏显示”。它实际上并没有附加元素 因此,最简单的选择是将其从数据数组中删除。只需过滤掉第一个节点: nodes = nodes.filter(function(d){ return d.depth != 0; }) 由于0是错误的,这与:

对于以下内容,我想隐藏根节点。感谢您的帮助,要查看代码,请查看小提琴

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

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

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

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

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;
})
这是你最新的小提琴:


此外,由于这些元素不再绘制,因此可以将dataviz向左移动,从而占用空的SVG空间。之所以有这个空间,是因为我们过滤掉了计算位置后的第一个节点

你的意思是“隐藏”,因为它在DOM中,但不可见?为此,可以为深度为0的节点指定一个特定类,并设置该类的可见性。或者,如果你的意思是“未绘制”,因为它根本不在DOM中,你可以。在添加圆等之前过滤你的选择。谢谢@TomShanley,我想“不绘制”它。如何修改代码以使用.filter?//在父对象的上一个位置输入任何新模式。var nodeEnter=node.enter().append('g').attr('class','node').attr(“transform”,函数(d){return”translate(“+source.y0+”,“+source.x0+”));})。在('click',click);//为节点nodenter.append('Circle').attr('class','node').attr('r',1e-6).样式(“fill”,函数(d){返回d.。_子项?“lightsteelblue”:“#fff”;});杰拉尔多说的:)谢谢你,如果你有时间,我会发布一个后续问题: