我已经建立了一个 d3 折线图,其中包含 3 条线,当用户将鼠标移到线上时,一条线已突出显示。事实证明,以这种方式选择线条非常困难。所以我尝试编写一个代码来检测最接近鼠标的线(在垂直维度上)。这工作正常:
http://plnkr.co/edit/7CD1KtqUJVnUF4KgFmUm?p=preview
我现在的问题是,如果线路在开始时“中断”,这不会以这种方式工作。
http://plnkr.co/edit/0as4QOYVYO0dhZIjGx86?p=preview
我添加了defined()
对 line 函数的调用:
var line0 = d3.svg.line()
.interpolate("cardinal")
.x(function(d,i) {return x(i);})
.y(function(d) {return y(d);});
var line1 = d3.svg.line()
.interpolate("cardinal")
.x(function(d,i) {return x(i);})
.y(function(d) {return y(d);})
.defined(function (d,i) {return i > 1;}); // <- Here ...
var line2 = d3.svg.line()
.interpolate("cardinal")
.x(function(d,i) {return x(i);})
.y(function(d) {return y(d);})
.defined(function (d,i) {return i > 3;}); // <- and here.
同样的问题,如果线条以不同的 x 值开头,我在这里模拟的有点骇人听闻:
http://plnkr.co/edit/hOtXOmQapYsuYgf9HkD3?p=preview
线条,我正在显示连接测量值,如果缺少测量值,线条就会中断。所以这些中断可能无处不在。你知道这个问题的解决方案吗?