Я пытаюсь создать принудительно ориентированный граф, используя d3.layout.force
, и мне нужно, чтобы контейнер был изменяемого размера - то есть я бы хотел иметь возможность рассчитать соответствующие значения заряда и linkDistance на основе размера или иметь d3 сделай это для меня каким-то волшебным способом.
Я предпринял попытку (ссылка: http://jsfiddle.net/VHdUe/6/), в которой используются только узлы. Я устанавливаю для заряда значение, которое основано на количестве узлов, которые будут соответствовать радиусу окружности, в которой он находится. имеет тенденцию быть в форме как.
Решение работает для некоторых контейнеров среднего размера, но если вы несколько раз нажмете кнопку изменить размер, вы увидите, что оно не работает для всех размеров ...
Единственный способ продвинуться вперед, который я вижу, - это использовать масштабное преобразование SVG, которое испортит размер моих элементов, что неблагоприятно. Любые другие варианты?
PS: я видел http://mbostock.github.com/d3/talk/20110921/bounding.html (ответ на D3 с направленной силовой компоновкой с ограничительной рамкой ), но я бы предпочел решение на основе гравитации, а не ограничивающее.