gpt4 book ai didi

javascript - 动态箭头颜色

转载 作者:数据小太阳 更新时间:2023-10-29 05:08:06 30 4
gpt4 key购买 nike

我正在使用 D3 绘制有向无环图,我希望能够通过更改该路径的边(和箭头)的颜色来突出显示到选定节点的路径。我很容易就能改变边缘颜色,但我不知道如何改变相应箭头的颜色。 most applicable source我发现这是不可能的,但这也是大约两年前的事,所以我想看看情况是否发生了变化。我用来创建链接、箭头和更新链接颜色的代码如下:

graph.append("svg:defs").selectAll("marker")
.data(["end"])
.enter().append("svg:marker")
.attr("id", String)
.attr("viewBox", "0 -5 10 10")
.attr("refX", 20)
.attr("refY", 0)
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.style("fill", "gray")
.append("svg:path")
.attr("d", "M0,-5L10,0L0,5");

. . .

var link = graph.append("svg:g").selectAll("line")
.data(json.links)
.enter().append("svg:line")
.style("stroke", "gray")
.attr("class", "link")
.attr("marker-end", "url(#end)");

. . .

function highlightPath(node) {
d3.selectAll("line")
.style("stroke", function(d) {
if (d.target.name == node) {
highlightPath(d.source.name);
return "lightcoral";
} else {
return "gray";
}
});
}

任何建议都会很棒。谢谢。

最佳答案

创建一个函数并给它一个返回值,val 应该是动态的:

function marker (color) {
var val;
graph.append("svg:defs").selectAll("marker")
.data([val])
.enter().append("svg:marker")
.attr("id", String)
.attr("viewBox", "0 -5 10 10")
.attr("refX", 20)
.attr("refY", 0)
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.style("fill", color)
.append("svg:path")
.attr("d", "M0,-5L10,0L0,5");
return "url(#" +val+ ")";
}

var link = graph.append("svg:g").selectAll("line")
.data(json.links)
.enter().append("svg:line")
.style("stroke", "gray")
.attr("class", "link")
.attr("marker-end", marker); //"url(#end)"

关于javascript - 动态箭头颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023102/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com