From bd525ea600d414cfe631620b503e17ae049de748 Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Mon, 20 Nov 2023 15:16:02 +1300 Subject: [PATCH 1/6] Add Sankey node align property --- src/traces/sankey/attributes.js | 6 ++++++ src/traces/sankey/defaults.js | 1 + src/traces/sankey/render.js | 7 +++++++ test/plot-schema.json | 12 ++++++++++++ 4 files changed, 26 insertions(+) diff --git a/src/traces/sankey/attributes.js b/src/traces/sankey/attributes.js index e717d5029d3..e792a3b3234 100644 --- a/src/traces/sankey/attributes.js +++ b/src/traces/sankey/attributes.js @@ -164,6 +164,12 @@ var attrs = module.exports = overrideAll({ description: 'Variables `sourceLinks` and `targetLinks` are arrays of link objects.', keys: ['value', 'label'] }), + align: { + valType: 'enumerated', + values: ['justify', 'left', 'right', 'center'], + dflt: 'justify', + description: 'Sets the alignment method used to position the nodes along the horizontal axis.' + }, description: 'The nodes of the Sankey plot.' }, diff --git a/src/traces/sankey/defaults.js b/src/traces/sankey/defaults.js index 01fc14f6fa4..3b8780f376e 100644 --- a/src/traces/sankey/defaults.js +++ b/src/traces/sankey/defaults.js @@ -34,6 +34,7 @@ module.exports = function supplyDefaults(traceIn, traceOut, defaultColor, layout coerceNode('hoverinfo', traceIn.hoverinfo); handleHoverLabelDefaults(nodeIn, nodeOut, coerceNode, hoverlabelDefault); coerceNode('hovertemplate'); + coerceNode('align'); var colors = layout.colorway; diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index f84a1edbba7..ebb95c0f62c 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -35,6 +35,12 @@ function sankeyModel(layout, d, traceIndex) { var horizontal = trace.orientation === 'h'; var nodePad = trace.node.pad; var nodeThickness = trace.node.thickness; + var nodeAlign = { + 'justify': d3Sankey.sankeyJustify, + 'left': d3Sankey.sankeyLeft, + 'right': d3Sankey.sankeyRight, + 'center': d3Sankey.sankeyCenter + }[trace.node.align]; var width = layout.width * (domain.x[1] - domain.x[0]); var height = layout.height * (domain.y[1] - domain.y[0]); @@ -61,6 +67,7 @@ function sankeyModel(layout, d, traceIndex) { .nodeId(function(d) { return d.pointNumber; }) + .nodeAlign(nodeAlign) .nodes(nodes) .links(links); diff --git a/test/plot-schema.json b/test/plot-schema.json index 4970a9f5752..9ad961d8701 100644 --- a/test/plot-schema.json +++ b/test/plot-schema.json @@ -44358,6 +44358,18 @@ "valType": "string" }, "node": { + "align": { + "description": "Sets the alignment method used to position the nodes along the horizontal axis.", + "dflt": "justify", + "editType": "calc", + "valType": "enumerated", + "values": [ + "justify", + "left", + "right", + "center" + ] + }, "color": { "arrayOk": true, "description": "Sets the `node` color. It can be a single value, or an array for specifying color for each `node`. If `node.color` is omitted, then the default `Plotly` color palette will be cycled through to have a variety of colors. These defaults are not fully opaque, to allow some visibility of what is beneath the node.", From aff34a3f81394d9281e2ec2536cce471cbd89a99 Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Tue, 28 Nov 2023 13:22:32 +1300 Subject: [PATCH 2/6] Add new test mocks --- test/image/baselines/sankey_align_center.png | Bin 0 -> 30658 bytes test/image/baselines/sankey_align_justify.png | Bin 0 -> 34465 bytes test/image/baselines/sankey_align_left.png | Bin 0 -> 30443 bytes test/image/baselines/sankey_align_right.png | Bin 0 -> 33805 bytes test/image/mocks/sankey_align_center.json | 26 ++++++++++++++++++ test/image/mocks/sankey_align_justify.json | 26 ++++++++++++++++++ test/image/mocks/sankey_align_left.json | 26 ++++++++++++++++++ test/image/mocks/sankey_align_right.json | 26 ++++++++++++++++++ 8 files changed, 104 insertions(+) create mode 100644 test/image/baselines/sankey_align_center.png create mode 100644 test/image/baselines/sankey_align_justify.png create mode 100644 test/image/baselines/sankey_align_left.png create mode 100644 test/image/baselines/sankey_align_right.png create mode 100644 test/image/mocks/sankey_align_center.json create mode 100644 test/image/mocks/sankey_align_justify.json create mode 100644 test/image/mocks/sankey_align_left.json create mode 100644 test/image/mocks/sankey_align_right.json diff --git a/test/image/baselines/sankey_align_center.png b/test/image/baselines/sankey_align_center.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1cdc2e74d5bb17f86172093db0cf9868cfd4d6 GIT binary patch literal 30658 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
v>v^HRzqWs>T8bs_p=l#4!os) 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 literal 0 HcmV?d00001 diff --git a/test/image/baselines/sankey_align_left.png b/test/image/baselines/sankey_align_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0022c7589cc86344f1a78c7c6d568e4d8086f99e GIT binary patch literal 30443 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/sankey_align_center.json b/test/image/mocks/sankey_align_center.json new file mode 100644 index 00000000000..c8a023fefe9 --- /dev/null +++ b/test/image/mocks/sankey_align_center.json @@ -0,0 +1,26 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "label": ["0", "1", "2", "3", "4", "5"], + "align": "center" + }, + "link": { + "source": [ + 0, 1, 4, 2, 1 + ], + "target": [ + 1, 4, 5, 4, 3 + ], + "value": [ + 4, 2, 3, 1, 2 + ] + } + }], + "layout": { + "title": {"text": "Sankey with center aligned nodes"}, + "width": 800, + "height": 800 + } +} diff --git a/test/image/mocks/sankey_align_justify.json b/test/image/mocks/sankey_align_justify.json new file mode 100644 index 00000000000..b1d9805f5c9 --- /dev/null +++ b/test/image/mocks/sankey_align_justify.json @@ -0,0 +1,26 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "label": ["0", "1", "2", "3", "4", "5"], + "align": "justify" + }, + "link": { + "source": [ + 0, 1, 4, 2, 1 + ], + "target": [ + 1, 4, 5, 4, 3 + ], + "value": [ + 4, 2, 3, 1, 2 + ] + } + }], + "layout": { + "title": {"text": "Sankey with justified node alignment"}, + "width": 800, + "height": 800 + } +} diff --git a/test/image/mocks/sankey_align_left.json b/test/image/mocks/sankey_align_left.json new file mode 100644 index 00000000000..85baa4b48a1 --- /dev/null +++ b/test/image/mocks/sankey_align_left.json @@ -0,0 +1,26 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "label": ["0", "1", "2", "3", "4", "5"], + "align": "left" + }, + "link": { + "source": [ + 0, 1, 4, 2, 1 + ], + "target": [ + 1, 4, 5, 4, 3 + ], + "value": [ + 4, 2, 3, 1, 2 + ] + } + }], + "layout": { + "title": {"text": "Sankey with left aligned nodes"}, + "width": 800, + "height": 800 + } +} diff --git a/test/image/mocks/sankey_align_right.json b/test/image/mocks/sankey_align_right.json new file mode 100644 index 00000000000..336c3e6e576 --- /dev/null +++ b/test/image/mocks/sankey_align_right.json @@ -0,0 +1,26 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "label": ["0", "1", "2", "3", "4", "5"], + "align": "right" + }, + "link": { + "source": [ + 0, 1, 4, 2, 1 + ], + "target": [ + 1, 4, 5, 4, 3 + ], + "value": [ + 4, 2, 3, 1, 2 + ] + } + }], + "layout": { + "title": {"text": "Sankey with right aligned nodes"}, + "width": 800, + "height": 800 + } +} From b11e8bc82eb4652c407d7a65a3852f8476ccbeb0 Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Tue, 28 Nov 2023 13:57:46 +1300 Subject: [PATCH 3/6] Add draftlog entry --- draftlogs/6800_add.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 draftlogs/6800_add.md diff --git a/draftlogs/6800_add.md b/draftlogs/6800_add.md new file mode 100644 index 00000000000..54bf252d0ea --- /dev/null +++ b/draftlogs/6800_add.md @@ -0,0 +1 @@ + - Add `align` option to Sankey nodes to control horizontal alignment [[#6800](https://github.com/plotly/plotly.js/pull/6800)] From 489835583e01d81f8a87259a217153c8396a27fb Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Tue, 28 Nov 2023 14:16:26 +1300 Subject: [PATCH 4/6] Linting --- src/traces/sankey/render.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index ebb95c0f62c..0894b058c27 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -36,10 +36,10 @@ function sankeyModel(layout, d, traceIndex) { var nodePad = trace.node.pad; var nodeThickness = trace.node.thickness; var nodeAlign = { - 'justify': d3Sankey.sankeyJustify, - 'left': d3Sankey.sankeyLeft, - 'right': d3Sankey.sankeyRight, - 'center': d3Sankey.sankeyCenter + justify: d3Sankey.sankeyJustify, + left: d3Sankey.sankeyLeft, + right: d3Sankey.sankeyRight, + center: d3Sankey.sankeyCenter }[trace.node.align]; var width = layout.width * (domain.x[1] - domain.x[0]); From ccff898604f39adfbd7fdea0a8d296f0eeff3621 Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Wed, 6 Dec 2023 11:05:57 +1300 Subject: [PATCH 5/6] Add mock for Sankey with circular links and right alignment --- .../baselines/sankey_circular_align_right.png | Bin 0 -> 36118 bytes .../mocks/sankey_circular_align_right.json | 27 ++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 test/image/baselines/sankey_circular_align_right.png create mode 100644 test/image/mocks/sankey_circular_align_right.json diff --git a/test/image/baselines/sankey_circular_align_right.png b/test/image/baselines/sankey_circular_align_right.png new file mode 100644 index 0000000000000000000000000000000000000000..39edbe3c98f45734cef0ab268062a56e7d19852d GIT binary patch literal 36118 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 BMe6_n literal 0 HcmV?d00001 diff --git a/test/image/mocks/sankey_circular_align_right.json b/test/image/mocks/sankey_circular_align_right.json new file mode 100644 index 00000000000..0dc9255fd5f --- /dev/null +++ b/test/image/mocks/sankey_circular_align_right.json @@ -0,0 +1,27 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "pad": 5, + "align": "right", + "label": ["0", "1", "2", "3", "4", "5", "6"] + }, + "link": { + "source": [ + 0, 0, 1, 2, 5, 4, 3 + ], + "target": [ + 5, 3, 4, 3, 0, 2, 2 + ], + "value": [ + 1, 2, 1, 1, 1, 1, 1 + ] + } + }], + "layout": { + "title": {"text": "Sankey with circular data, aligned right"}, + "width": 800, + "height": 800 + } +} From 0516c4afca513c23b1ecc62748b7c98fc9f91c10 Mon Sep 17 00:00:00 2001 From: Adam Reeve Date: Wed, 6 Dec 2023 12:15:58 +1300 Subject: [PATCH 6/6] Rename mock --- ...right.png => zz-sankey_circular_align_right.png} | Bin ...ght.json => zz-sankey_circular_align_right.json} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename test/image/baselines/{sankey_circular_align_right.png => zz-sankey_circular_align_right.png} (100%) rename test/image/mocks/{sankey_circular_align_right.json => zz-sankey_circular_align_right.json} (100%) diff --git a/test/image/baselines/sankey_circular_align_right.png b/test/image/baselines/zz-sankey_circular_align_right.png similarity index 100% rename from test/image/baselines/sankey_circular_align_right.png rename to test/image/baselines/zz-sankey_circular_align_right.png diff --git a/test/image/mocks/sankey_circular_align_right.json b/test/image/mocks/zz-sankey_circular_align_right.json similarity index 100% rename from test/image/mocks/sankey_circular_align_right.json rename to test/image/mocks/zz-sankey_circular_align_right.json