代码之家  ›  专栏  ›  技术社区  ›  Sreeram TP

使用套索接近选定的点

  •  1
  • Sreeram TP  · 技术社区  · 7 年前

    我在看d3.js的照片。我找到了一种方法来选择散点图中的点,并在这个很棒的博客帖子中突出显示它们。 here

    我想进一步扩展这一点,列出所选点的类以及突出显示它们。

    如果我选择4个点对应 setosa 2分 virginica 我想得到这样的数组。

    [[setosa, 1.2, 3.4],
    [setosa, 1.2, 3.4],
    [setosa, 1.2, 3.4],
    [setosa, 1.2, 3.4],
    [virginica, 1.2, 3.4],
    [virginica, 1.2, 3.4]]
    

    我希望这发生在套索的末端。我玩了一点套索末端功能,但我没能做到。这是怎么做到的呢?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Gerardo Furtado    7 年前

    我在这里提出的答案将为您提供一组对象。从这个角度来看,对于一个数组(如您所需),您只需要做一些小的调整,您可以自己做。

    首先,让我们创建一个空数组:

    var mySelectedArray = [];
    

    然后,在 lasso_end ,让我们获取所选元素,这些元素实际上是一个带有内部DOM元素数组的数组:

    var selected = lasso.items().filter(function(d) {
        return d.selected===true
    });
    

    然后,使用该数组,让我们获取它们的数据,将它们推送到空数组中:

    selected[0].forEach(function(d){
        mySelectedArray.push(d3.select(d).datum())
    });
    

    以下是更新的bl.ocks,选择圆点并查看控制台: http://bl.ocks.org/GerardoFurtado/raw/53ae382aa8fd2ea751683e946bc50b19/03ef4083122568306237493afbdc4e442f2398f8/


    附言:你也可以简单地使用d3 selectAll 而不是 lasso.items() 和筛选 selected: true ,它提供了一个简单的数组。