Javascript d3.js尊重每个树映射节点的权重

Javascript d3.js尊重每个树映射节点的权重,javascript,d3.js,Javascript,D3.js,我目前正在使用d3.js中修改过的可缩放树映射()进行一个项目,但在实现我正在寻找的这个特定行为时遇到了一些困难 理想情况下,树中的每个节点将根据其指定的权重而不是其子节点的权重之和来调整大小。我能找到的唯一相关问题()并不是我想要的,尽管它可能被用来产生类似的效果。但是,尝试使用过滤的虚拟节点方法在修改父节点的子节点时保持父节点的大小不变会导致难看的转换工件。我假设这是因为较高级别知道虚拟节点,但较低级别不知道(因为它已过滤,所以不可见) 我该如何实现这种行为呢?事实证明,我正在使用的实现已经

我目前正在使用d3.js中修改过的可缩放树映射()进行一个项目,但在实现我正在寻找的这个特定行为时遇到了一些困难

理想情况下,树中的每个节点将根据其指定的权重而不是其子节点的权重之和来调整大小。我能找到的唯一相关问题()并不是我想要的,尽管它可能被用来产生类似的效果。但是,尝试使用过滤的虚拟节点方法在修改父节点的子节点时保持父节点的大小不变会导致难看的转换工件。我假设这是因为较高级别知道虚拟节点,但较低级别不知道(因为它已过滤,所以不可见)


我该如何实现这种行为呢?

事实证明,我正在使用的实现已经有一个函数(累积(d))负责这种行为。我解决了这个问题,将其重写为始终直接返回节点的值,如下所示:

function accumulate(d) {
    var result = (d._children = d.children)
            ? d.value
            : d.value;
    if(d.children){
        d.children.forEach(accumulate);
    }
    return result;
}
现在,节点根据需要独立于其子节点进行缩放

希望这能在将来为其他人省去一些困惑