d3.js Sankey图表:沿X轴手动定位SINKS

时间:2016-11-17 21:12:59

标签: javascript d3.js sankey-diagram

stackoverflow社区有一个很好的解决方案,可以沿x轴移动sankey图表中的节点(链接here)。

但是,我注意到无法手动更改 sink 节点的位置(即自动分配到最右侧的节点)。因为我将时间合并到sankey图中,所以我需要将某些接收器节点固定在手动指定的x位置。

以下是需要此功能的JSFiddle示例。具体来说,我需要将node "6": "Departed (6 mo.)"固定到x位置'1'。

"nodes":[
    ...
    {"node":6,"name":"Departed (6 mo.)","xPos":1},  // <-- need to move to position x=1; manual override not taking effect
    ...

根据上述解决方案,我在computeNodeBreadths()内更新了d3.sankey(),并在感兴趣的节点中包含了"xPos":1;但改变没有生效。

是否有人对上述解决方案有建议的更新,允许用户手动调整接收器节点x位置?

1 个答案:

答案 0 :(得分:0)

经过一些研究,答案是在moveSinksRight(x)方法d3.sankey()中注释掉computeNodeBreadths()行。归功于Greg Ross:https://stackoverflow.com/a/21540569/4245462