如何在分层布局中设置节点位置?
How can I set node positions in a hierarchical layout?
我有一个由 vis.js 以分层方式(自上而下)绘制的网络。在通过鼠标交互左右移动节点后,我可以调用 getPositions
来检索任何节点的 X 坐标,但是当我调用 storePositions
时,节点将移回其原始位置,即首次添加时绘制的位置Network
.
我希望用户能够控制每个节点在其 "free" 移动轴上的位置(即,在自上而下的分层布局中,节点 y
的位置是由 node.level
设置,但节点 x
位置由用户交互设置并保持不变)
对 LayoutEngine.js 的一些编辑解决了这个问题。大多数情况下,我不会忘记:LayoutEngine::setupHierarchicalLayout
可以修补以重新同步有问题的节点及其在数据集中的 x 或 y 值。
在 LayoutEngine::setupHierarchicalLayout
中,可以将 this.body.nodes[nodeId].x
或 this.body.nodes[nodeId].y
设置到他们想要的位置。
另请参阅:
我有一个由 vis.js 以分层方式(自上而下)绘制的网络。在通过鼠标交互左右移动节点后,我可以调用 getPositions
来检索任何节点的 X 坐标,但是当我调用 storePositions
时,节点将移回其原始位置,即首次添加时绘制的位置Network
.
我希望用户能够控制每个节点在其 "free" 移动轴上的位置(即,在自上而下的分层布局中,节点 y
的位置是由 node.level
设置,但节点 x
位置由用户交互设置并保持不变)
对 LayoutEngine.js 的一些编辑解决了这个问题。大多数情况下,我不会忘记:LayoutEngine::setupHierarchicalLayout
可以修补以重新同步有问题的节点及其在数据集中的 x 或 y 值。
在 LayoutEngine::setupHierarchicalLayout
中,可以将 this.body.nodes[nodeId].x
或 this.body.nodes[nodeId].y
设置到他们想要的位置。
另请参阅: