Как настроить горизонтальное положение узла в d3 sankey.js?

Я пытаюсь построить некоторые блок-схемы, используя d3 sankey.js, Я застрял в расположении узлов х позиций на диаграммах.

пример диаграммы

t2_a должен быть в том же столбце, что и t2_b поскольку они представляют количество за тот же период времени. Однако по умолчанию это помещается в конце, что дает неправильную интерпретацию.

Я могу организовать вручную для небольшого количества узлов, но это действительно сложно, когда количество узлов увеличивается. Любая помощь или предложение будут высоко оценены.

1 ответ

Решение

В sankey.js комментируйте вызов moveSinksRight в computeNodeBreadths:

  function computeNodeBreadths() {
    var remainingNodes = nodes,
        nextNodes,
        x = 0;

    while (remainingNodes.length) {
      nextNodes = [];
      remainingNodes.forEach(function(node) {
        node.x = x;
        node.dx = nodeWidth;
        node.sourceLinks.forEach(function(link) {
          nextNodes.push(link.target);
        });
      });
      remainingNodes = nextNodes;
      ++x;
    }

    //
    // moveSinksRight(x); <-- comment this
    scaleNodeBreadths((width - nodeWidth) / (x - 1));
  }
Другие вопросы по тегам