Javascript 如何从force布局图过渡到已定位节点的布局图?

Javascript 如何从force布局图过渡到已定位节点的布局图?,javascript,d3.js,Javascript,D3.js,我有一个力布局图。我有一个按钮,当我点击它时,它会按照某种顺序对节点进行排序。给他们屏幕上的绝对坐标 我希望,当我点击这个按钮时,两个动作之间平稳过渡,而不是直接跳进去。我想这样做,这样当用户点击切换到“静态”定位时,我可以看到节点来自何处: 停止强制布局(通过调用.stop()或取消订阅/忽略“勾选”事件) 将所需的定位应用于所有节点。所谓节点,是指传递给force.nodes()的数组,force布局已使用x和y值对其进行了更新。在“静态”模式下,您需要自己将x和y坐标设置为您需要的任何坐标

我有一个力布局图。我有一个按钮,当我点击它时,它会按照某种顺序对节点进行排序。给他们屏幕上的绝对坐标


我希望,当我点击这个按钮时,两个动作之间平稳过渡,而不是直接跳进去。我想这样做,这样当用户点击切换到“静态”定位时,我可以看到节点来自何处:

  • 停止强制布局(通过调用
    .stop()
    或取消订阅/忽略
    “勾选”
    事件)

  • 将所需的定位应用于所有节点。所谓节点,是指传递给
    force.nodes()
    的数组,force布局已使用
    x
    y
    值对其进行了更新。在“静态”模式下,您需要自己将
    x
    y
    坐标设置为您需要的任何坐标

  • 调用更新函数(或渲染、刷新或任何您调用的函数)。这假定您已经有了这样一个更新函数,您可以在force布局的每个刻度处调用它。在第1步和第2步之后,调用此更新函数应该“正常工作”,因为它不应该知道是否有强制布局或其他逻辑在移动节点。在这个函数中,您必须使用d3通常的enter、update和exit。在这里,您可以使用d3的
    transition()
    方法使所有DOM节点从强制布局最后放置它们的位置平滑地过渡到静态布局逻辑放置它们的位置

  • 您可能会发现,您只希望在静态模式下调用
    transition()
    ,而不是在强制布局模式下调用,因此您可能希望优化更新函数的逻辑,以便仅选择性地对选择调用
    transition()


  • 为彻底的回答干杯:)现在在另一台电脑上,所以我将首先检查这件事,并让你知道我的进展:)可能会有帮助。谢谢拉尔斯,我会在可能的时候看一看,然后再给你回复