Я много читал о влиянии на начальную анимацию силовой компоновки, но боюсь, что еще не понял ее.d3.js, управляющий начальной анимацией в силовом макете
Я обнаружил (и смог реализовать) this example, о том, как эффективно «остановить» его.
Но мой вопрос в том, можно ли контролировать его (например, влиять на то, сколько времени потребуется до тех пор, пока «сила не остановится»?).
Из документации кажется, что альфа является параметром изменить, но это не делает разницы (я пробовал отрицательные значения, ноль и положительное значение, без какого-либо заметного различия).
Вот jsdiddle того, что я пытаюсь сделать: yrsccfiddle, что я пытаюсь сделать.
var force = d3.layout.force()
.nodes(d3.values(datax.nodes))
.links(datax.links)
.size([xViewPortArea.Width, xViewPortArea.Height])
.linkDistance(xGraphParameters.xLinkDistance)
.charge(xGraphParameters.xCharge)
.on("tick", tick)
.alpha(-5) // HERE
.start();
Мои вопросы:
- , значение альфа будет на самом деле влияют на количество итераций? (Я думал, что это означало: «Если значение неположительно, а макет силы запущен, этот метод останавливает компоновку силы на следующем тике и отправляет« конец »in the documentation
- в этом this posting предлагается функция . по @JohnS, который, видимо, может помочь, но я не понял, где один должен назвать его
PS:. еще один крутой вариант, чтобы изображение на экране, а затем вычислить оптимальное расположение в фоновом режиме like here . Но я отказался от попытки его реализовать.
хороший. Благодарю. Я просто скопировал код в конце моего файла, и он отлично работает. P.S: Я также играл с трением, но это, как вы говорите: это замедляет анимацию, но приводит к странной форме сети. – user1043144
Это может быть упрощено бит 'while (force.alpha()) {force.tick(); } 'или' while (force.alpha()> 1e-5) {force.tick(); } ', если мы хотим контролировать уровень, на котором макет должен прекратить вычисление. –