拖动超出范围时,D3画笔范围会从图表中消失

时间:2014-08-25 20:51:08

标签: javascript css svg d3.js

我在D3中整理了一个图表,该图表使用带有圆形手柄的垂直滑动画笔,加上一条水平线以显示与曲线的交点:

enter image description here

。 。 。但是当我拖动手柄超过范围点= 0时,画笔范围,手柄和线条都会从图表中消失:

enter image description here

我已经禁用了上刷柄,因为这是一个单向工具,但我怀疑这可能是问题所在。我也尝试更改边距以显示“> 100%的画笔高度”,但元素仍然以相同的方式消失。我是否错误地定义了刷子参数,或者这是否值得在D3回购中提交票证?

以下是完整示例:http://bl.ocks.org/wboykinm/1a2806d828cb3fa64c4d

谢谢!

1 个答案:

答案 0 :(得分:1)

这是因为此时你的画笔的范围是0,因此是空的。如果您查看source code,空刷子会将display设置为none。如果您使用浏览器开发人员工具检查g.resize.s,则可以看到这一点。

一种可能的解决方法是将其添加到brushend侦听器:

// Add the brush to the Y axis, set to 10% of the extent
var brush = d3.svg.brush()
    .y(y)
    .extent([0,0.1])
    .on("brushend", function(){
        brushg.selectAll(".resize.s")
            .style("display","inline")
    }); 

以下是使用此解决方案的PLUNK

一旦开始真正使用图表中的画笔,您可能不必处理此问题。