代码之家  ›  专栏  ›  技术社区  ›  Roopesh Kumar Ramesh

要转换d3树结构层次结构中特定节点之后的所有节点位置

  •  0
  • Roopesh Kumar Ramesh  · 技术社区  · 8 年前

    我有一棵D3的树。每个节点都有一个EntityType。如果某个特定节点的entitytype等于“battery”,那么我将设置该节点的位置,使其与父节点的距离比通常要远一点。问题是,EntityType为“Battery”的节点也有子节点,但其位置不会根据此节点的位置进行修改。

    这是我修改过的代码。

    .attr("transform", (d) => {
      if(d.data.EntityType === 'Battery') {
         return "translate(" + (d.y +100 ) + "," + (d.x) + ")";
      }
    

    我用这一行修改了这个节点的位置。但我该如何修改其子级的位置?

    编辑:

    我发现,如果我可以检查节点层次结构中的所有父节点,那么如果其父层次结构中存在一个具有整数类型的节点的节点,则可以相应地设置其位置。

    但现在我必须检查选定节点的完整父层次结构。这可能吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Roopesh Kumar Ramesh    8 年前

    我找到了解决办法。通过设置节点的深度并使用d3.descendants()属性相应地设置其所有子节点的深度,我们可以实现这一点。

    还有一个d3.祖先()属性来获取节点的所有祖先。

    推荐文章