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

时间:2015-04-23 13:50:09

标签: javascript d3.js force-layout

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

更新:

我找到working solution,它基于使用seeded random number generator

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

1 个答案:

答案 0 :(得分:2)

您可以修改D3的力布局,或者根据它来创建自己的布局。在节点的定位中至少有3个地方使用随机性(Math.Random)(假设力布局引用其他代码,可能会有更多)。您必须消除所有随机性,以便每次都以相同的方式显示图形:

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

但是,这会妨碍布局的工作原理 - 它使用随机性将自己快速排序成清晰易读的图表。如果您的节点数量很少,那么它可能不会成为问题,但是大量节点可能最终会出现问题。