我正在为一个图形可视化项目启动JavaScript和D3,我不知道如何获得我想要的数据。我想我只是不知道一些基本的JS元素。。。
我有一些节点和链接。。。
var nodes_data = [
{"id": "Node 1"},
{"id": "Node 2"},
{"id": "Node 3"},
{"id": "Node 4"},
{"id": "Node 5"}]
var links_data = [
{"source": "Node 1", "target":"Node 4"},
{"source": "Node 2", "target":"Node 1"},
{"source": "Node 1", "target":"Node 5"},
{"source": "Node 4", "target":"Node 3"},
{"source": "Node 5", "target":"Node 3"}]
我只想在选择一个节点时突出显示一个链接。我的节点是这样设置的。。。
var linksRef =
svgRef.append("g")
.attr("class", "links")
.selectAll("line")
.data(links_data).enter()
.append("line");
var nodesRef =
svgRef.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(nodes_data).enter()
.append("circle")
.attr("r", nodeRadius)
.on("mouseover", mouseOver)
.on("mouseout", mouseOut);
我希望通过这种方式更改悬停节点的链接颜色。。。
function mouseOver(d) {
var nodeId = d.id;
d3.selectAll("links")
.filter(function (d) { return d.source === nodeId })
.style("stroke", "red");
}
我确实试着去替换
links
那里有
.links
或
link
或
.link
但这些只是在黑暗中拍摄。当我将这些输出到控制台时,总是得到空数组。显然有些JS或D3的东西我没抓住!
在这种情况下,访问和过滤数据的正确方法是什么?