且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

D3.js语义缩放和平移示例不起作用

更新时间:2022-12-24 12:52:03

您有一个很好的实现,但由于一个主要的错字而出轨了:

You had a pretty good implementation that was derailed by one major typo:

function transform(d) {
    return "translate(" + x(d.y) + "," + x(d.x) + ")";
}

应该是

function transform(d) {
    return "translate(" + x(d.y) + "," + y(d.x) + ")";
}

要使路径不翻转,您应该不应该反转y轴:

To have your paths not flip you should have probably not reversed the y-axis:

y = d3.scale.linear().domain([0, h]).range([h, 0])

更改为

y = d3.scale.linear().domain([0, h]).range([0, h])

固定在此处: http://jsfiddle.net/6kEpp/2/.但是,为将来参考,您可能应该让x轴在x值上运行,而y轴在y值上运行,否则您将真的感到困惑.

Fixes are here: http://jsfiddle.net/6kEpp/2/. But for future reference, you should probably have your x-axis operate on x-values, and y-axis operate on y-values, or you're just going to really confuse yourself.

最后的评论以完善您的实现:

  1. 从默认渲染(或在打开/关闭节点之后)到缩放实现之间,贝塞尔曲线图中有些跳跃.您只需要使它们具有相同的贝塞尔曲线功能,并且在使用它时会感觉好很多.
  2. 您需要根据现有节点的相对运动,在图形重绘后更新缩放向量.否则,当您打开/关闭节点后再次尝试缩放时,将会突然跳动.