【问题标题】:Want to transform position all nodes after a specific node in a d3 tree structure hierarchy想要在 d3 树结构层次结构中的特定节点之后转换所有节点的位置
【发布时间】:2018-07-11 06:45:49
【问题描述】:

我有一棵 d3 树。每个节点都有一个 EntityType。如果特定节点的 EntityType 等于“电池”,我将其位置设置为比通常情况下离其父节点更远一些。问题是EntityType为'Battery'的节点也有子节点,但它们的位置并没有根据该节点的位置进行修改。

这是我修改的代码。

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

我用这条线来修改这个节点的位置。但是我如何修改它的孩子的位置呢?

编辑:

我发现如果我可以检查节点层次结构中的所有父节点,如果在其父层次结构中存在具有 EntityType Battery 的节点,我可以相应地设置其位置。

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

【问题讨论】:

    标签: javascript typescript d3.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多