D3.js SVG元素在拖动操作和平移操作后移动(跳跃)

D3.js SVG元素在拖动操作和平移操作后移动(跳跃),d3.js,D3.js,当我试图在d3图表中实现一个可移动的线段时,我遇到了一个我认为很奇怪的行为。线段的端点可以四处移动并放置在任何位置。这是通过拖动行为完成的。拖动行为只是更新线段(路径)下的数据。如果在通过拖动操作更改线数据后,用户尝试使用线段平移图表区域,则在平移操作开始后,线段将立即跳转 line = d3.svg.line() .interpolate('linear') .x(function(d) { return x(d.index); }) .y(functi

当我试图在d3图表中实现一个可移动的线段时,我遇到了一个我认为很奇怪的行为。线段的端点可以四处移动并放置在任何位置。这是通过拖动行为完成的。拖动行为只是更新线段(路径)下的数据。如果在通过拖动操作更改线数据后,用户尝试使用线段平移图表区域,则在平移操作开始后,线段将立即跳转

line = d3.svg.line()
      .interpolate('linear')
       .x(function(d) { return x(d.index); })
       .y(function(d) { return y(d.value); });
我确实注意到,拖动操作一开始,y轴域就改变了。拖动操作完成且平移操作开始后,y轴域将再次更改。这解释了为什么y轴函数的相同输入(d.index=40,d.value=100.3)会为每个操作返回不同的值:y轴域在每个操作中都不同


我将如何着手修复此问题?

您可能需要设置。如果没有看到您的代码,我们就无法真正帮助您。最有可能的问题是您正在更改行的属性,而不是底层数据对象(请参阅)。缩放或平移时,所有内容都会根据其数据值重新绘制,因此线条会“跳转”回其位置。但正如@LarsKotthoff所说,这实际上只是猜测,没有看到更多的代码。