使用套索访问选定的点

时间:2018-07-24 04:46:22

标签: javascript d3.js plot

我正在经历D3.js的绘图。我从这篇很棒的博客文章here

中找到了一种选择散点图中的点并将其突出显示在图中的方法

我想进一步扩展它,并列出选中点的类别并突出显示它们。

如果我选择了与setosa相对应的4个点和virginica相对应的2个点,我想得到一个像这样的数组。

[[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]]

我希望这在套索结束时发生。我使用lasso_end函数玩了一点,但是却无法实现。如何实现??

1 个答案:

答案 0 :(得分:1)

我在这里提出的答案将为您提供一系列对象。因此,要拥有一个数组(根据需要),您只需要进行一些细微的调整即可。

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

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/


PS:您也可以简单地使用D3 selectAll代替lasso.items()并过滤selected: true,这将为您提供一个简单的数组。