我正在经历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函数玩了一点,但是却无法实现。如何实现??
答案 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
,这将为您提供一个简单的数组。