Javascript 使用brush.clear()的d3.js不会';我不工作

Javascript 使用brush.clear()的d3.js不会';我不工作,javascript,d3.js,brush,Javascript,D3.js,Brush,在一个对象中,我存储了用d3.js制作的折线图,它可以刷选中的区域 当我在折线图的选定部分外部单击时,选定区域将被删除 我想删除点击外部链接的选定区域,例如[重置] 不幸的是,即使我通过调用brush对象上的clear()调用折线图对象访问画笔对象,也不会删除选择 如何从外部折线图中使用外部链接删除笔刷选择 我创建笔刷: this.brush = d3.svg.brush() .x(xScale) .on('brushstart', function() { li

在一个对象中,我存储了用d3.js制作的折线图,它可以刷选中的区域

当我在折线图的选定部分外部单击时,选定区域将被删除

我想删除点击外部链接的选定区域,例如[重置]

不幸的是,即使我通过调用
brush
对象上的
clear()
调用折线图对象访问画笔对象,也不会删除选择

如何从外部折线图中使用外部链接删除笔刷选择

我创建笔刷:

this.brush = d3.svg.brush()
    .x(xScale)
    .on('brushstart', function() {
        lineChart.brushStart();
    })
    .on('brushend', function() {
        lineChart.brushEnd();
    });
我创建刷牙区域:

this.brushArea = svg.append('svg:g')
    .attr('class', 'brush')
    .call(this.brush)
    .selectAll('rect')
    .attr('height', this.height);
在外部链接上,我放置
clear()
命令:

<span onclick="javascript: lineChart.brush.clear();">[reset]</span>
[重置]
它不会从折线图中删除所选内容

请帮忙

关于
brush.clear()
的文档效率不高。

brush.clear()
仅重置范围。您需要再次调用
brush
重新绘制笔刷。的文档中有一些关于这方面的详细信息

brush.clear();
svg.selectAll('.brush').call(brush);
第二行是重新绘制笔刷。

请注意,这不会自动重新绘制笔刷或分派任何 将事件发送给侦听器。要重新绘制画笔,请在选定区域或区域上调用画笔 过渡;要分派事件,请使用brush.event

可以通过先清除笔刷,然后重新绘制来实现这一点

d3.selectAll(".brush").call(brush.clear());
首先清除画笔并重新绘制页面上的所有画笔

尽管如此,我还是建议在父容器的上下文中对选择执行
clear()
。例如:

d3.selectAll(".brush-container .brush").call(brush.clear());
用例是当页面上有多个笔刷时

现在,为了具体回答您的问题,您可以调用如下函数

var d3Brush = this.brush;

function clearBrush(){
  d3.selectAll("g.brush").call(d3Brush.clear());
}
打电话

<span onclick="javascript: clearBrush();">[reset]</span>
[重置]

您可能还需要调用
brush.event()
以确保您的侦听器已启动。在d3.v3中,它将如下所示:

this.brushArea.call( this.brush.clear());
this.brush.event(this.brushArea);