D3:点击时力布局船体的延迟更新

时间:2017-09-22 08:33:05

标签: javascript jquery d3.js

当我的D3力布局在数据集之间转换时有一个滞后更新:

当数据集从MORE链接更改为LESS链接数据集时,剩余凸包在1次单击时不会消失。用户需要单击两次更新按钮才能运行此代码:

pathg.selectAll("path").remove();

See JSFiddle here

从MORE船体数据集到LESS船体数据集的1-Click过渡后: Remnant convex hulls

什么可能是错的?它与D3有关吗?

1 个答案:

答案 0 :(得分:2)

问题在于:

而不是

return "M" + 
    d3.polygonHull(d.values.map(function(i) { return [i.x, i.y]; }))
    .join("L") + "Z";

应该是

var poly = d3.polygonHull(d.values.map(function(i) { return [i.x, i.y]; }));                                                
if (poly){
 return "M" + poly.join("L") + "Z";
}

某些数组的d3.polygonHull返回null的原因导致错误。

关于pathg.selectAll("path").remove();您不需要这样做,因为退出会删除不需要的链接。

工作小提琴here