2015-07-06 5 views
2

Всякий раз, когда вы обновляете this example, узлы в другом порядке. Как вы могли сделать так, чтобы при каждом обновлении порядок был одинаковым? Возможно, «под узел 1» вверху, а затем справа - «подузел 2» и т. Д., Все вокруг. Помимо этого, этот пример работает для того, что мне нужно достичь.d3 узлы компоновки силы в предсказуемом порядке

Нижеприведенные решения требуют фиксации узлов по точкам x, y. Но выполнение этого, кажется, устраняет функциональность перетаскивания (узлы должны быть перетащены в разные места, чтобы изменить порядок). Кроме того, я не всегда знаю, сколько узлов будет изначально.

https://groups.google.com/forum/#!topic/d3-js/NsHlubbv3pc

Calm down initial tick of a force layout

Configure fixed-layout static graph in d3.js

Хотя сопротивление является требованием, то анимация не является. Я попытался посмотреть, не остановился ли эффект анимации, но это не так.

var n = 50; 

for (var i = 0; i < n; ++i) force.tick(); 

force.stop(); 

Кроме того, попробовал добавить новое свойство к данным, дающим каждому ребенку ранг, чтобы каким-то образом манипулировать. И попытался присвоить id ранга и сортировку. Также попытался использовать индексный номер массива объектов. Не повезло. Спасибо за любые идеи.

+1

Нет. Внедрение силовой схемы по дизайну является недетерминированным. –

+0

AFAIK просто возможно с очень простой компоновкой статической силы http://bl.ocks.org/mbostock/1667139 – kwoxer

+0

@Lars Kotthoff Спасибо Lars. Исходя из этого, я переключился на обычную схему дерева в радиальном стиле. Это наводит порядок. Надеюсь, я смогу найти способ добавить функцию перетаскивания, чтобы переместить узлы, но это другой вопрос. – airwwwave

ответ

0

Замечание Пер Ларса, похоже, это невозможно в силовой компоновке. Переключено на макет дерева. JSFIDDLE Еще нужно добавить кусок сопротивления. Будет обновлен, если я смогу заставить это работать.

Links to jsfiddle.net must be accompanied by code.