Javascript h(函数(d){d.type=“selection”;})//将覆盖交互视为移动。 .on(“鼠标向下触摸启动”,笔刷居中);//刷牙前重新居中。 g、 附加(“g”) .attr(“变换”、“平移(0)”、“高度+”) .call(d3.axisBott

Javascript h(函数(d){d.type=“selection”;})//将覆盖交互视为移动。 .on(“鼠标向下触摸启动”,笔刷居中);//刷牙前重新居中。 g、 附加(“g”) .attr(“变换”、“平移(0)”、“高度+”) .call(d3.axisBott,javascript,d3.js,charts,Javascript,D3.js,Charts,h(函数(d){d.type=“selection”;})//将覆盖交互视为移动。 .on(“鼠标向下触摸启动”,笔刷居中);//刷牙前重新居中。 g、 附加(“g”) .attr(“变换”、“平移(0)”、“高度+”) .call(d3.axisBottom(x)); 函数(){ var dx=x(1)-x(0),//重新居中时使用固定宽度。 cx=d3.鼠标(此)[0], x0=cx-dx/2, x1=cx+dx/2; justcentered=true; d3.选择(此.parentNod

h(函数(d){d.type=“selection”;})//将覆盖交互视为移动。 .on(“鼠标向下触摸启动”,笔刷居中);//刷牙前重新居中。 g、 附加(“g”) .attr(“变换”、“平移(0)”、“高度+”) .call(d3.axisBottom(x)); 函数(){ var dx=x(1)-x(0),//重新居中时使用固定宽度。 cx=d3.鼠标(此)[0], x0=cx-dx/2, x1=cx+dx/2; justcentered=true; d3.选择(此.parentNode) .调用(brush.move,x1>width?[width-dx,width]:x0<0?[0,dx]:[x0,x1]); } 函数brushed(){ 变量范围=d3.event.selection.map(x.invert,x);
点分类(“选定”,函数(d){返回范围[0]谢天谢地,这正是我想要的。我没有考虑到我可以停止事件传播这一事实。似乎停止事件传播会让用户无法在一次单击中重新居中并拖动笔刷。确切地说,尽管我不确定这是一件常见的事。如果这是一项要求,您可以使用stopPropagation和其他逻辑来满足您的期望。
d3.event.stopPropagation();
function brushcentered() {
  var dx = x(1) - x(0), // Use a fixed width when recentering.
  cx = d3.mouse(this)[0],
  x0 = cx - dx / 2,
  x1 = cx + dx / 2;
  d3.select(this.parentNode).call(brush.move, x1 > width ? [width - dx, width] : x0 < 0 ? [0, dx] : [x0, x1]);
  d3.event.stopPropagation();
}