代码之家  ›  专栏  ›  技术社区  ›  hoohoo-b

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

  •  2
  • hoohoo-b  · 技术社区  · 7 年前

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

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

    See JSFiddle here

    单击一次后,从多外壳数据集过渡到少外壳数据集: Remnant convex hulls

    1 回复  |  直到 7 年前
        1
  •  2
  •   Cyril Cherian    7 年前

    问题在于:

    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

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

    工作小提琴 here