d3.js - 使用 d3 和 d3-flextree 插件绘制链接
问题描述
我(仍在)尝试使用 D3 和 d3-flextree 插件制作组织结构图。我努力绘制节点之间的链接。我使用的“方程”考虑节点的中间(据我所知),而我想从节点的末尾绘制。
我认为我的错误在于我的绘图链接功能
function diagonal(s, d) {
path = `M ${s.x} ${s.y}
L ${s.x} ${(s.y + d.y) * 0.5},
${d.x} ${(s.y + d.y) * 0.5 },
${d.x} ${d.y}`
return path
}
很难解释,所以我做了一个 JSFiddle:https
://jsfiddle.net/ymv5sr9k/11/
在这个例子中,由于正确的填充,所有链接都是我想要的方式,但是只要 nodeSize 改变(见大节点)都坏了。我想我需要一个更通用的绘图链接功能,但我想不通
感谢阅读,
放大
解决方案
问题解决了!正如我在评论中所说,我需要移动水平线。我添加nodeSize
了两个y
“控制点”。而 nodeSize 实际上是source.y - destination.y - padding
. 这是我的最终等式:
function diagonal(s, d) {
var nodeSize = s.y - d.y - 30
return "M" + s.x + "," + s.y
+ "L" + s.x + "," + (d.y + s.y + nodeSize) / 2
+ " " + d.x + "," + (d.y + s.y + nodeSize) / 2
+ " " + d.x + "," + d.y;
};
感谢您的时间!
推荐阅读
- php - HTML表格中的提交按钮未显示
- python - SIGPIPE 后 Rserve 无法重新建立健康连接
- asp.net-core - blazor wasm PWA 安装为桌面应用程序后未离线加载
- regex - 正则表达式匹配帮助?空格后关闭
- php - 如何使用Prepared Statements知道用户名是否已经在PHP的数据库中?
- android - 在 Android 中重新激活 Camera2
- python - How to encode json dump correctly in python
- swift - 如何从 Swift 泛型函数中捕获参数
- android - ViewBinding 的 Master/Detail Flow 问题
- python - 使用蓝图和命名空间时,Flask RESTPlus API URL not found 错误 - 404 not found 错误