javascript - 将curveStep应用于d3 forceDirected布局中的路径
问题描述
我需要将 forceDirected 布局转换为使用阶梯路径曲线而不是点对点直线。连接节点的典型链接使用这种方法。
function ticked() {
link
.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
node
.attr("cx", function (d) { return d.x+6; })
.attr("cy", function(d) { return d.y-6; });
}
这是一个 forceDirected 作为用例的示例
https://www.d3-graph-gallery.com/graph/network_basic.html
这里大致了解我希望如何将链接呈现为红色。
这是我尝试用作解决方案的方法
https://www.geeksforgeeks.org/d3-js-curvestep-method/
这是我根据上面的链接示例测试的一段代码,但没有取得多大成功
var line = d3.line()
.x((d) => d.x)
.y((d) => d.y)
.curve(d3.curveStep);
function addConnections(o){
// o is link.d from existing links between nodes
var ldata = []
var d = {x: o.source.x,y:o.source.y}
ldata.push(d)
var d = {x: o.target.x,y:o.target.y}
ldata.push(d)
var steps = svg
.selectAll("path")
.data(ldata)
.enter()
.append("path")
.attr("d",function(d){
console.log(d)
line(d)
})
.classed("steps",true)
}
解决方案
推荐阅读
- html - 为什么最后一个 li 项目出现在父容器之外?
- swift - 如何在 SwiftUI 列表中显示领域结果?
- visible - anylogic 如何设置端口在上层可见 false
- html - 如何在不显示空格的情况下使用 CSS 在 HTML 中对齐元素(部分与标题)
- algorithm - 在滑动窗口中查找第二大元素
- javascript - 为什么我的 Promise reducer 模式会打乱订单?
- javascript - 如何..按类获取元素,抓取id,并使用id作为变量传递给php
- amazon-web-services - DNS 与 Google 域不一致
- python - Python 在创建新的切片列表时是否使用指针?
- linux - 使用 mmap 或 sbrk 一次为 Linux 中的自定义分配器分配一大块是否有缺点?