2016-10-07 3 views
0

В v3.x У меня была диаграмма с центральным узлом в середине, а некоторые узлы либо слева, либо справа. Что-то вроде этого: enter image description hereСиловая диаграмма с двумя силами

Ive использовал немного неуклюжий метод, ниже

tick = function() { 
nodes.forEach(function (n) { 
    if (n.position == "L") { 
     n.x -= force.alpha() * 80; 
    } 
    if (n.position == "R") { 
     n.x += force.alpha() * 80; 
    } 
});... 

У меня была «позиция» маркер на объекте узла и толкнул его вправо или влево от центрального неподвижного узла. Мне было интересно, может ли v4 предложить что-то более «встроенное» в функциональность, используя .force("x", d3.forceX()) & .force("y", d3.forceY()) или .force("xcenter", d3.forceX(width/2).strength(0.01)) или другое свойство моделирования в d3.js v4.

Любые советы/предложение было бы полезно

ответ

0

Не уверен, если это будет лучшим решением, но вы можете поставить логику, должны ли узлы находиться на левой/правой в аксессору функции forceX.

редактировать:

d3.forceSimulation(nodes) 
 
    .force("x",d3.forceX(function(n){ 
 
    if (n.position === "L"){ 
 
     return l_position 
 
    }else{ 
 
     return r_position 
 
    }) 
 
    ) 
 

+0

Выработать немного больше об этой идее pelase –

+0

добавил псевдокод exampling то, что я имел в виду – amirothman

+0

я дам ему идти, и вернуться к вам на это. благодаря –