d3.js-将所选笔刷调整到矩形的左、右坐标系

d3.js-将所选笔刷调整到矩形的左、右坐标系,d3.js,D3.js,我正在刷一组矩形(一系列矩形)。我需要做的是一旦刷我想选择的开始和结束的矩形,无论它是否选择部分。需要在绘制笔刷的位置选择整个矩形集。 目前我只能刷一次,如果我执行下面的代码,就不能再刷了。 矩形的高度为15。我错过了什么 我发现,只有当我添加以下内容时,我才能再次刷牙: gbrush .attr(“x”,baseval) .attr(“宽度”,endval) 我的代码: var baseval, endval,selected,gbrush //initial brush drawn var

我正在刷一组矩形(一系列矩形)。我需要做的是一旦刷我想选择的开始和结束的矩形,无论它是否选择部分。需要在绘制笔刷的位置选择整个矩形集。 目前我只能刷一次,如果我执行下面的代码,就不能再刷了。 矩形的高度为15。我错过了什么

我发现,只有当我添加以下内容时,我才能再次刷牙: gbrush .attr(“x”,baseval) .attr(“宽度”,endval)

我的代码:

var baseval, endval,selected,gbrush
//initial brush drawn
var brush = d3.svg.brush()
            .x(d3.scale.identity().domain([30, 290]))
            .y(d3.scale.identity().domain([0, height-50]))
            .on("brushstart", brushstart)
            .on("brush", brush)
            .on("brushend", brushed);

            gbrush=svg.append("g").call(brush);


            function brushed() 
            {
                var e = brush.extent(); 
                //get all the selected rectangles where brushed.
                selected = svg.selectAll("rect").filter(function(d) 
                {
                return d.x_axis <= e[1][0] && d.x_axis + d.width >= e[0][0] && d.y_axis <= e[1][1] && d.y_axis + d.height >= e[0][1];
                })
                gbrush.selectAll("rect")
                .attr("height",  15)
                .attr("y",10)
                //get the start and end point of the rectangle's x-axis where the brush is drawn
                baseval = selected[0][0].x.baseVal.value;
                endval = selected[0][selected[0].length-1].x.baseVal.value;


                gbrush.selectAll("rect")
                .attr("height",  15)
                .attr("y",10)
                .attr("x",baseval)
                .attr("width",endval);

                .....



            }


            function brushstart() 
            {
                //var e = brush.extent(); 
                //brush.extent = [100,100];
                gbrush.selectAll("rect")
                .attr("height",  15)
                .attr("y",10);

            }
            function brush() 
            {
                gbrush.selectAll("rect")
                .attr("height",  15)
                .attr("y",10);
            }
var baseval、endval、selected、gbrush
//初始画笔绘制
var brush=d3.svg.brush()
.x(d3.scale.identity().domain([30290]))
.y(d3.scale.identity().domain([0,高度-50]))
.on(“刷起”,刷起)
.on(“刷子”,刷子)
.在(“刷涂”,刷涂);
gbrush=svg.append(“g”).call(画笔);
函数brushed()
{
var e=brush.extent();
//获取所有已刷过的选定矩形。
selected=svg.selectAll(“rect”).filter(函数(d)
{
返回d.x_轴=e[0][0]&d.y_轴=e[0][1];
})
gbrush.selectAll(“rect”)
.attr(“高度”,15)
.attr(“y”,10)
//获取绘制笔刷的矩形x轴的起点和终点
baseval=所选[0][0].x.baseval.value;
endval=selected[0][selected[0].length-1].x.baseVal.value;
gbrush.selectAll(“rect”)
.attr(“高度”,15)
.attr(“y”,10)
.attr(“x”,baseval)
.attr(“宽度”,endval);
.....
}
函数brushstart()
{
//var e=brush.extent();
//brush.extent=[100100];
gbrush.selectAll(“rect”)
.attr(“高度”,15)
.attr(“y”,10);
}
函数刷()
{
gbrush.selectAll(“rect”)
.attr(“高度”,15)
.attr(“y”,10);
}

我的查询格式是否无效?我不知道为什么我没有得到任何评论。