我有一个d3示例,其中x轴上的平移导致加速平移。也就是说,当我按住左键并移动指针时,数据以非线性方式平移。这可能是一个例子中最好的例子,见:
https://bl.ocks.org/sachams/d8621093ebb8181d50fe
我读了一些帖子,其中提出的问题是我将缩放器附加到我捕获鼠标输入的相同元素上,并且我必须在它们之间放置一个额外的(d3.behavior.zoom jitters, shakes, jumps, and bounces when dragging)。
我尝试过添加不同子元素并将我的缩放器附加到不同位置的各种组合,但找不到有效的组合。
有什么建议吗?
答案 0 :(得分:0)
问题是你的zom处理函数(update()
)中你正在重置x标度的域:
x.domain(scope.range);
// ...
Zoomer.x(x) // update the zooming behavior to match the domain
第一行是导致抖动的原因。在调用此代码之前,您已在由缩放行为直接调用的函数中将scope.range
设置为x.domain()
,因此这是不必要的。第二行也不是必需的,因为您已经告诉缩放行为“跟踪”x
比例,但在这种情况下不会造成任何伤害。