如果没有连接到节点onclick,则淡出sankey链接

时间:2017-12-07 17:27:42

标签: javascript jquery d3.js

我希望能够在单击该节点时淡出未连接到sankey图中特定节点的所有链接。

       var link = svg.append("g").selectAll(".link")
           .data(energy.links)
           .enter().append("path")
           .attr("class", "link")
           .attr("d", path)
           .style("stroke-width", function(d) { return 16; })
           .style("stroke", function(d){return d.color;})
           .sort(function(a, b) { return b.dy - a.dy; });

结果应该是单击节点时所有未连接的链接都会消失。

我无法想到执行此操作所需的逻辑。

1 个答案:

答案 0 :(得分:0)

链接对象具有源节点对象和目标节点对象。如果您选择所有链接并根据您使用节点的ID是否与单击的节点匹配来设置其不透明度。例如,如果' name'是唯一的ID,然后

node.on("click", function(d) {
   link.style("opacity", function(l) {
      if (l.source.name == d.name || l.target.name == d.name) {
         return 1
      } else {
         return 0.1
      }
   })
})