d3如何重绘已删除的内容,但数据仍存储在变量中

问题描述

我使用此https://observablehq.com/@d3/hierarchical-edge-bundling创建了边缘捆扎。假设我给存储链接的g提供了这样的类名称

 const link = svg.append("g")
  .attr("stroke",colornone)
  .attr("fill","none")
  .attr("class","linksClass")
.selectAll("path")
.data(root.leaves().flatMap(leaf => leaf.outgoing))
.join("path")
  .style("mix-blend-mode","multiply")
  .attr("d",([i,o]) => line(i.path(o)))
  .each(function(d) { d.path = this; });

,然后在代码中需要删除所有链接以提高性能的地方。

d3.select(".linksClass")selectAll("*").remove();

现在所有DOM元素都已删除,但该值仍存储在link中。然后,我想遍历link中的所有数据,并从中仅选择我需要的链接。我用这个

let linksToStay = link.filter((d) => {
    if ( // my condition) {
      return d;
    } else return null;
  });

所以linksToStay仅包含我需要的链接,但是如何重绘它。

如果我使用d3.select(“ linksClass”)。selectAll(“ path”)。data(linksToStay)...则不起作用,因为数据需要一个数组,而linksToStay不是一个数组。

是否有可能完成我想要的?我需要这样的东西

linksToStay.each((d) => { //draw d.path});

但我不确定如何编写其余代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)