D3 sankey图 - 强制节点位置

时间:2014-12-18 19:00:09

标签: javascript d3.js sankey-diagram

使用D3 Sankey插件,我使用新值更新Sankey图表(更改数据,传递节点和链接的新值 - 保持所有这些值一致)。是否有像d3.treemap' s sticky这样的功能来维护页面上的节点和链接顺序?如果没有,有没有办法建立这个?

var sankey = d3.sankey()
    .nodeWidth(15)
    .nodePadding(10)
    .size([width, height]);
    .sticky(true)

我遵循此处的模式:http://bost.ocks.org/mike/sankey/

1 个答案:

答案 0 :(得分:1)

不,没有。如果您想深入了解布局,请在此处查看:

function computeNodeDepths(iterations) {
 var nodesByBreadth = d3.nest()
    .key(function(d) { return d.x; })
    .sortKeys(d3.ascending)
    .entries(nodes)
    .map(function(d) { return d.values; });

initializeNodeDepth();
...

请注意,sortKeys指向d3.ascending。您希望这指向某种硬连线值,您需要在第一次迭代或数据准备中计算这些值。当碰撞检测功能运行时,它仍然会被调整,因此您可能会看到您的节点被推出位置,但这将为您提供保持控制的最佳机会。