D3.js 奇怪的D3平移/缩放行为-加速平移

D3.js 奇怪的D3平移/缩放行为-加速平移,d3.js,zooming,panning,D3.js,Zooming,Panning,我有一个d3的例子,在这个例子中,x轴上的平移会导致加速平移。也就是说,当我按住左键并移动指针时,数据以非线性方式平移。这可能在一个示例中得到了最好的说明,请参见: 我读了一些帖子,其中指出问题在于我将缩放器附加到了捕获鼠标输入的同一个元素上,并且我必须在它们之间放置一个额外的元素 我尝试过各种组合,包括添加不同的子元素和将缩放器连接到不同的位置,但找不到一个有效的组合 有什么建议吗?问题在于,在zom处理程序函数更新中,您正在重置x刻度的域: x.domain(scope.range); //

我有一个d3的例子,在这个例子中,x轴上的平移会导致加速平移。也就是说,当我按住左键并移动指针时,数据以非线性方式平移。这可能在一个示例中得到了最好的说明,请参见:

我读了一些帖子,其中指出问题在于我将缩放器附加到了捕获鼠标输入的同一个元素上,并且我必须在它们之间放置一个额外的元素

我尝试过各种组合,包括添加不同的子元素和将缩放器连接到不同的位置,但找不到一个有效的组合


有什么建议吗?

问题在于,在zom处理程序函数更新中,您正在重置x刻度的域:

x.domain(scope.range);
// ...
Zoomer.x(x) // update the zooming behavior to match the domain

第一行是引起抖动的原因。在调用此代码之前,您已经在由缩放行为直接调用的函数中将scope.range设置为x.domain,因此这是不必要的。第二行也不是必需的,因为您已经告诉缩放行为跟踪x比例,但在这种情况下不会造成任何伤害。

问题似乎是您正在为缩放处理程序中的缩放行为重置x域。您不需要这样做,因为您已经将x比例附加到缩放行为。就是这样-谢谢!!我让缩放处理程序调用以下函数,并修复了它:函数updateZoom{xAxisG.callxAxis;yAxisG.callyAxis;xGridG.callxGrid;yGridG.callyGrid;//添加行路径.datumscope.data.attr'd',line;}