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

ott*_*ter 5 javascript d3.js force-layout

我想创建一个力有向图,但我需要它在每次生成时保持不变(使用相同的数据)。有没有办法使用 d3.js 做到这一点?

更新:

我找到了工作解决方案,它基于使用种子随机数生成器

// set the random seed
Math.seedrandom('mySeed');
Run Code Online (Sandbox Code Playgroud)

Kat*_*rne 2

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

\n\n

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

\n\n

然而,这会妨碍布局的工作方式 \xe2\x80\x93 它使用随机性快速将其自身整理成清晰的图表。如果节点数量很少,那么这可能不会成为问题,但节点数量过多可能会导致混乱。

\n

  • 谢谢凯瑟琳,你的建议促使我搜索 JavaScript 的种子随机数生成器,并用这个[链接](https://github.com/davidbau/seedrandom)替换所有随机函数似乎做得很好 (4认同)