如何在分层布局中设置节点位置?

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].xthis.body.nodes[nodeId].y 设置到他们想要的位置。

另请参阅:

Vis.js pull request #4183