如何在d3.js v4中保留特定的旧转换,而该转换仅限于平移?
在下面的模拟示例中,我要限制x轴上的缩放范围,直到选中“两个缩放”复选框。
但是,先缩放然后选中复选框会更改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
相当陌生