Как получить одинаковые позиции узлов в графе компоновки силы d3


Я хотел бы создать силовой ориентированный граф, но мне нужно, чтобы он оставался неизменным каждый раз, когда он генерируется (с теми же данными). Есть ли способ сделать это с помощью d3?js?

Обновление:

Я нашел рабочее решение , которое основано на использовании генератора случайных чисел

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

1 ответ:

Вы можете изменить макет силы D3 или создать свой собственный макет на его основе. Есть, по крайней мере, 3 места, где случайность (математика.Random) используется при позиционировании узлов (их может быть больше, учитывая силу компоновки ссылок другого кода). Вы должны были бы устранить все случайности, чтобы получить график, чтобы отобразить таким же образом каждый раз:

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

Однако это затруднило бы способ компоновки работает – он использует случайность, чтобы быстро разобраться в четкой диаграмме. Если у вас небольшое количество узлов, то это, вероятно, не будет проблемой, но большое количество узлов может просто запутаться.