如何在 d3 的力布局图中获得相同的节点位置

How to get the same node positions in d3's force layout graph

我想创建一个力导向图,但我需要它在每次生成时都保持不变(使用相同的数据)。 有什么方法可以使用 d3.js?

更新:

我找到了 working solution, which is based on using seeded random number generator

// set the random seed
Math.seedrandom('mySeed');

您可以通过修改 D3 的强制布局,或基于它创建您自己的布局。至少有 3 个地方在节点的定位中使用了随机性(Math.Random)(可能还有更多,因为力布局引用了其他代码)。您必须消除所有随机性才能使图表每次都以相同的方式显示:

https://github.com/mbostock/d3/blob/master/src/layout/force.js

但是,这会妨碍布局的工作方式 – 它使用随机性将自己快速整理成清晰的图表。如果您的节点数量很少,那么这可能不是问题,但是大量节点可能最终会变得混乱。