Я вижу несколько примеров использования функции распространения D3 Sankey здесь. Однако я не вижу функции, реализованной в плагине D3 Sankey.
Может ли кто-нибудь помочь с кодом функциональности Spread, который я могу вставить в фактический плагин?
Я вижу несколько примеров использования функции распространения D3 Sankey здесь. Однако я не вижу функции, реализованной в плагине D3 Sankey.
Может ли кто-нибудь помочь с кодом функциональности Spread, который я могу вставить в фактический плагин?
Если вы посмотрите на источник макета библиотеки, они вы используете, вы можете найти эту функцию. Если вы просто проведете рефакторинг и внедрите это, это должно дать вам достойную отправную точку.
_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;
}
});
}