d3.js 桑基图:沿 X 轴手动定位 SINKS
d3.js Sankey Chart: Manually Position SINKS Along X Axis
Whosebug 社区有一个很好的解决方案,可以在桑基图中沿 x 轴移动节点 (link 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
...
根据上述解决方案,我已在 d3.sankey()
内更新了 computeNodeBreadths()
并将 "xPos":1
包含在感兴趣的节点内;但更改没有生效。
有没有人对上述解决方案有推荐的更新,允许手动调整 sink 节点 x 位置?
经过一番研究,答案是注释掉 d3.sankey()
方法 computeNodeBreadths()
中的行 moveSinksRight(x)
。感谢 Greg Ross:
Whosebug 社区有一个很好的解决方案,可以在桑基图中沿 x 轴移动节点 (link 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
...
根据上述解决方案,我已在 d3.sankey()
内更新了 computeNodeBreadths()
并将 "xPos":1
包含在感兴趣的节点内;但更改没有生效。
有没有人对上述解决方案有推荐的更新,允许手动调整 sink 节点 x 位置?
经过一番研究,答案是注释掉 d3.sankey()
方法 computeNodeBreadths()
中的行 moveSinksRight(x)
。感谢 Greg Ross: