2013-05-15 2 views
7

Я использую макет силы для представления направленной невзвешенной сети. Мое вдохновение приходит из следующего примера: http://bl.ocks.org/mbostock/1153292Остановить силовое расположение на d3js и начать бесплатные перетаскивающие узлы

enter image description here

Поскольку мои собственные данные действительно беспорядок, я хотел бы, чтобы остановить макет и перемещать узлы, перетаскивая их вручную. Мне также хотелось бы, чтобы движение узла не меняло положение других. И необходимо, чтобы ссылки становились длиннее, чтобы достигнуть узла, который был перемещен.

Есть ли простой способ сделать это?

+0

Вы можете вызвать 'force.stop()', чтобы остановить симуляцию. –

+0

это нормально, но потом? –

+0

Затем движение узлов должно остановиться. –

ответ

0
function nameOfFunction() { 
    d3.selectAll(".classOfYourNodes").each(
     function(d) { 
      d.fixed = true; 
     } 
    ) 
} 

Метод .each вызывает анонимную функцию, которая в данном случае устанавливает «фиксированную» атрибут верно для каждого узла в пределах выделенной области.

Редактировать: Вышеупомянутое относится к вашему комментарию о желании остановить все узлы, а не, симуляция продолжается, когда вы перетаскиваете узел, как вызывается force.stop().