我在进行D3缩放时遇到了正确刷选的问题。我在这里创建了一个jsFiddlehttp://jsfiddle.net/Gwp25/2/,其中包含一些我在其他地方找到的虚假数据。操作过程如下:放大(使用鼠标滚轮),然后开启刷选。在此之后,刷选节点。所选节点是错误的-有些超出了刷选区域。以下是处理在刷选范围内选择节点的相关代码部分。
.on("brush", function() {
var extent = d3.event.target.extent();
console.log(extent);
d3.selectAll(".node").select("circle").classed("selected", function(d) {
return d.selected = (extent[0][0] <= x_scale(d.x) && x_scale(d.x) < extent[1][0]
&& extent[0][1] <= d3.tran(d.y) && y_scale(d.y) < extent[1][1]);
});
})
有人有解决这个问题的想法吗?我知道这与节点及其原始位置和x有关,但我不太确定如何获取节点x和y相对于它们缩放后的位置。
有任何想法吗?