【发布时间】:2023-02-01 05:04:30
【问题描述】:
我有一个这样的 GV 文件:
digraph Final_Graph {
graph [center=true rankdir=LR ratio=compress size="15,10"]
a
b
c
d
a -> b [label = 1 id=1]
a -> c [label = 2 id=2]
a -> d [label = 3 id=3]
b -> d [label = 4 id=4]
c -> d [label = 5 id=5]
subgraph cluster_1{
color=lightgrey style=filled
label="A"
a
b
}
subgraph cluster_2{
color=lightgrey style=filled
label="B"
a
b
}
subgraph cluster_3{
color=lightgrey style=filled
label="C"
c
d
}
}
我已经在 D3.js 中编写了我的代码,以便根据其 ID 突出显示每个边缘(将颜色更改为红色),因此 a->b 将首先突出显示 id=1,然后是 a->c (id=2),依此类推。
这是我当前在 D3 中的代码:
let graphviz = d3.select(".graph").graphviz()
.transition(function () {
return d3.transition("main")
.ease(d3.easeLinear)
.delay(500)
.duration(1500);}
)
.logEvents(true)
.on("initEnd", render)
.on("end", function() {
d3.selectAll("g.edge").sort(function(a,b){ // Set up edges.
return a["id"] - b["id"];
});
let link = d3.selectAll("path");
link.each(function(d, i) {
setTimeout(function() {
d3.select(link.nodes()[i]).transition().style("stroke", "red");
}, i * 1000);
})
});
但是,当我加载网站时,边缘并没有按照我的想法按升序突出显示;相反,突出显示顺序是 5->1->2->3->4。我已经检查了我的控制台并为节点添加了 ID,并根据 ID 重新排列了节点;然而,这也没有解决问题。
那么有没有什么方法可以让这个图中的边像我提到的那样用 1 到 5 的 ID 突出显示?
【问题讨论】:
标签: javascript d3.js graphviz