Можно ли с помощью метода sortMethod определить относительное положение узлов в одной иерархии? - PullRequest
0 голосов
/ 01 мая 2018

Например, у меня есть простая сеть:

var options = {
  style = {
    hierarchical = {
      sortMethod = 'directed'
    }
  }               
}    
var nodes = new vis.DataSet([
  {id: 1, label: 'Node 1'},
  {id: 2, label: 'Node 2'},
  {id: 3, label: 'Node 3'},
  {id: 4, label: 'Node 4'},
  {id: 5, label: 'Node 5'}
]);

var edges = new vis.DataSet([
  {from: 1, to: 2},
  {from: 2, to: 3},
  {from: 4, to: 3},
  {from: 5, to: 3}
]);

Есть ли способ указать, что я хочу, чтобы узел 2 отображался между узлами 4 и 5?

1 Ответ

0 голосов
/ 04 мая 2018

Боюсь, единственный способ - установить координаты узлов явно:

var nodes = new vis.DataSet([
  {id: 1, label: 'Node 1', x: 0, y: -100},
  {id: 2, label: 'Node 2', x: 0, y:    0},
  {id: 3, label: 'Node 3', x: 0, y:  100},
  {id: 4, label: 'Node 4', x:  100, y: 0},
  {id: 5, label: 'Node 5', x: -100, y: 0}
]);

Дело в том, что физика работает только с существующими узлами и ребрами. Тем не менее, вы можете попробовать один из следующих приемов:

  • добавить скрытые ребра между 2 и 4 и 2 и 5 - таким образом, вы можете надеяться , что, поскольку узлы в этих парах притягиваются друг к другу, узел 2 заканчивается как минимум ближе к 4 и От 5 до 4;
  • или вместо того, чтобы задавать координаты явно, используйте некоторую предопределенную разметку, чтобы расположить узлы в нужном порядке; однако, насколько мне известно, никакой существующий макет не гарантирует, что это будет так (см. эти , эти проблемы : это vis.js-версия -зависимый и не надежный)
...