javascript - D3 树状图直边

标签 javascript d3.js

浏览documentation on d3.cluster()我没有看到开发人员可以用来设置连接线类型的任何内容。似乎只有一种弯曲的样条连接,但这不是树状图最传统的样式——至少对于我的情况而言。我想要的是垂直方向的 90 度 Angular 连接节点:

enter image description here

问题

从文档来看,没有直接的内置解决方案,但是d3.cluster() 可以提供什么来实现上述结果?还是我最好从头开始编写所有代码?

最佳答案

此问题之前已在"d3js Tree square" 中提出过.但是,我真的不认为这是重复的,因为那个老问题使用的是 D3 v3,而且事实证明,它不容易适应 v5。此外,您明确要求垂直布局。

尽管如此,基本方法保持不变:只需使用自定义路径生成器。在旧 v3 的基础上构建Block这可以按如下方式完成:

svg.selectAll(".link")
  .data(root.links())
  .enter().append("path")
    .attr("d", elbow);   // Appended paths use the custom path generator.

// Custom path generator    
function elbow(d) {
  return "M" + d.source.x + "," + d.source.y + "H" + d.target.x + "V" + d.target.y;
}

通过一些小的修改以使用 v5 API,Mike Bostock 的演示可以重写为 Vertical "Elbow" Dendrogram .

请注意,这与 Mike Bostock 在他的 Tree of Life 中使用的方法相同他在其中使用多个自定义路径生成器来创建径向布局的笔记本。

关于javascript - D3 树状图直边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55824002/

相关文章:

javascript - 无法使用javascript eval函数解析json字符串

javascript - typescript - 表示类型中的模块模式

javascript - 如何进行转换 :translate-drag function of d3 more smooth?

javascript - 在D3.JS的Choropleth map 上添加图例

javascript - 为什么酒吧 D3 js 之间没有间隙

javascript - D3 按名称而不是值对层次结构条进行排序

javascript - 如何使用推文按钮弹出新窗口

javascript - jQuery Lint 错误是非描述性的

javascript - Google Maps Api-3 里面输入地址

javascript - 单击 map 框标记后,有没有办法从中获取信息?