保留非缩放轴的变换级别-D3.js

时间:2019-02-27 14:09:09

标签: javascript d3.js

如何在d3.js v4中保留特定的旧转换,而该转换仅限于平移?

在下面的模拟示例中,我要限制x轴上的缩放范围,直到选中“两个缩放”复选框。

JSfiddle Example

但是,先缩放然后选中复选框会更改x轴域,我想从没有单击复选框的地方开始。

要重现此效果,请运行示例,使用鼠标滚轮进行缩放,然后选中复选框,然后使用鼠标重新执行缩放,x刻度不会从其原来的位置开始。

有人可以建议需要解决的问题吗?


缩放功能是

function zoom() {

  y_axis.transition()
    .duration(50)
    .call(yAxis.scale(d3.event.transform.rescaleY(yScale)));
  var new_xScale = xScale;

  if (bothClicked) {
    x_axis.transition()
      .duration(50)
      .call(xAxis.scale(d3.event.transform.rescaleX(xScale)));

    new_xScale = d3.event.transform.rescaleX(xScale);
  }
  // re-draw circles using new y-axis scale; ref [3]
  var new_yScale = d3.event.transform.rescaleY(yScale);

  circles
    .attr("cy", function(d) {
      return new_yScale(d[1]);
    })
  circles.attr("cx", function(d) {
    return new_xScale(d[0]);
  });

}

我对d3.js和javascript

相当陌生

0 个答案:

没有答案