Функциональность спреда D3 Sankey

Я вижу несколько примеров использования функции распространения D3 Sankey здесь. Однако я не вижу функции, реализованной в плагине D3 Sankey.

Может ли кто-нибудь помочь с кодом функциональности Spread, который я могу вставить в фактический плагин?


person Bugaboo    schedule 24.03.2016    source источник


Ответы (1)


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

_spreadNodes: function(data) {
  var chart = this,
      nodesByBreadth = d3.nest()
      .key(function(d) { return d.x; })
      .entries(data.nodes)
      .map(function(d) { return d.values; });

  nodesByBreadth.forEach(function(nodes) {
    var i,
        node,
        sum = d3.sum(nodes, function(o) { return o.dy; }),
        padding = (chart.features.height - sum) / nodes.length,
        y0 = 0;
    nodes.sort(function(a, b) { return a.y - b.y; });
    for (i = 0; i < nodes.length; ++i) {
      node = nodes[i];
      node.y = y0;
      y0 += node.dy + padding;
    }
  });
}
person jVERM    schedule 18.05.2016