Начисление на основе размера — d3 force layout

Я пытаюсь создать граф, ориентированный на силу, используя d3.layout.force, и мне нужно размер контейнера может быть изменен - ​​то есть я хотел бы иметь возможность рассчитать соответствующие значения заряда и linkDistance в зависимости от размера или заставить d3 сделать это за меня каким-то волшебным образом.

Я предпринял попытку (ссылка: http://jsfiddle.net/VHdUe/6/), которая использует только узлы. Я устанавливаю заряд на значение, основанное на количестве узлов, которые будут соответствовать радиусу круга, к которому он имеет форму.

Решение работает для некоторых контейнеров среднего размера, но если вы нажмете кнопку «Изменить размер» несколько раз, вы увидите, что оно работает не для всех размеров...

Единственный путь вперед, который я вижу, — это использовать SVG масштабное преобразование, которое испортит размер моих элементов в неблагоприятном свете. Любые другие варианты?

PS: я видел http://mbostock.github.com/d3/talk/20110921/bounding.html(ответ на D3 принудительно направленный макет с ограничивающей рамкой), но я предпочел бы решение, основанное на гравитации, чем решение с ограничивающей рамкой.

13
задан Community 23 May 2017 в 10:29
поделиться