javascript - 分离节点并避免 d3.js 中树形图中的重叠

标签 javascript d3.js

我正在研究响应式水平树布局。链接:d3.js https://codesandbox.io/s/cool-field-vsc6m 。我的子节点正在重叠。

如何以最小距离分隔节点并避免重叠?

enter image description here 。代码可以在上面的代码沙箱链接中找到。

最佳答案

我检查了您的代码,发现您使用的是半径常量值(45)。

我已经编辑了您的代码并保存了动态半径的逻辑。我不确定你是否会 能不能保存。所以,我也将半径的逻辑放在这里。

我还建议您不要在节点内使用标签以获得更好的视觉体验,并使用工具提示。只是一个建议,这取决于你。

如果它解决了您的问题,请告诉我。

node.append("circle").attr("r", function(d, i) {
  const padding = 5
  // find siblings of a  node
  let siblings = (d.parent && d.parent.children) || null;
  // find minimum radius based on their x values so they don't overlap.
  let radius =
    siblings && siblings.length > 1 ?
    (siblings[1].x - siblings[0].x - padding) / 2 :
    45;
  return radius;
});

enter image description here

关于javascript - 分离节点并避免 d3.js 中树形图中的重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60181044/

相关文章:

javascript - 哈密​​顿路径

javascript - Wicket 6 在 JavaScript 中使 session 无效

javascript - 在两列上传播 D3.js 图例

javascript - 用于 D3 图表的 AngularJS 指令

javascript - 通过appendChild()可以添加哪些JS对象?

javascript - 当我在菜单外单击时如何隐藏多个 jQuery toggle()?

javascript - svg + Sprite 表 + d3 + clipPath + 位置 + 大小

javascript - 将给定范围值转换为 D3 中的域值

javascript - 在 d3.js 中使用 tickValues 控制条形位置

javascript - D3 Uncaught TypeError : path. 数据不是函数