From 82af33e80ed08dd5d88dec4a41978865f50eac94 Mon Sep 17 00:00:00 2001 From: water <672684719@qq.com> Date: Wed, 12 Aug 2026 02:07:54 +0800 Subject: [PATCH 1/2] fix(sankey): transpose node.x/node.y scaling for vertical orientation (Fixes #7947) --- src/traces/sankey/render.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index a07d18a9c9e..42af645fd1d 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -246,7 +246,9 @@ function sankeyModel(layout, d, traceIndex) { if(trace.node.x.length && trace.node.y.length) { for(i = 0; i < Math.min(trace.node.x.length, trace.node.y.length, graph.nodes.length); i++) { if(trace.node.x[i] && trace.node.y[i]) { - var pos = [trace.node.x[i] * width, trace.node.y[i] * height]; + var pos = horizontal + ? [trace.node.x[i] * width, trace.node.y[i] * height] + : [trace.node.x[i] * height, trace.node.y[i] * width]; graph.nodes[i].x0 = pos[0] - nodeThickness / 2; graph.nodes[i].x1 = pos[0] + nodeThickness / 2; @@ -802,9 +804,13 @@ function persistFinalNodePositions(d, gd) { for(var i = 0; i < d.graph.nodes.length; i++) { var nodeX = (d.graph.nodes[i].x0 + d.graph.nodes[i].x1) / 2; var nodeY = (d.graph.nodes[i].y0 + d.graph.nodes[i].y1) / 2; - x.push(nodeX / d.figure.width); - y.push(nodeY / d.figure.height); - } + if(d.trace.orientation === 'h') { + x.push(nodeX / d.figure.width); + y.push(nodeY / d.figure.height); + } else { + x.push(nodeX / d.figure.height); + y.push(nodeY / d.figure.width); + } Registry.call('_guiRestyle', gd, { 'node.x': [x], 'node.y': [y] From c4412b15cb2bda45f99416dc3a76cdf5c064f052 Mon Sep 17 00:00:00 2001 From: Cameron DeCoster Date: Mon, 24 Aug 2026 18:20:39 -0600 Subject: [PATCH 2/2] Add missing paren and use existing prop Co-authored-by: Cameron DeCoster --- src/traces/sankey/render.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 42af645fd1d..31783d9d3e1 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -804,13 +804,14 @@ function persistFinalNodePositions(d, gd) { for(var i = 0; i < d.graph.nodes.length; i++) { var nodeX = (d.graph.nodes[i].x0 + d.graph.nodes[i].x1) / 2; var nodeY = (d.graph.nodes[i].y0 + d.graph.nodes[i].y1) / 2; - if(d.trace.orientation === 'h') { + if(d.horizontal) { x.push(nodeX / d.figure.width); y.push(nodeY / d.figure.height); } else { x.push(nodeX / d.figure.height); y.push(nodeY / d.figure.width); } + } Registry.call('_guiRestyle', gd, { 'node.x': [x], 'node.y': [y]