You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Curious if there are any plans to merge the more recent d3-sankey support for node alignment (from this commit, June 13 of this year) into your fork? It's a really useful feature that I'd love to be able to use with your great wrapper.
Reacted by Philipp, harisbal, Gabriel (Gabu) Bellon, tjrileywisc, Antonin Stefanutti, adrianritchie, yserebriyskaya, bynr and Adam Reeve
Some of our PRs to upstream d3-sankey were merged by Mike Bostock, so catching up makes sense for multiple reasons. One of our PRs predictably wasn't taken up, we'll need to reapply, likely not a lot of divergence yet. The alignment options should be exposed via plotly.js attributes in the JSON.
would be great to have this option! when visualizing process flows, it makes no sense that the terminal nodes are all on the right of the viz (as for those which did not pass the whole process, they should not be on the same level as all the nodes which did).
Reacted by harisbal, J Schmidt, ryankinsey1, Kaltersand, Cimbali and yserebriyskaya
Would be a very welcome addition indeed :)
Not being able to control the position of nodes in the sankey diagram is unfortunately a big limitation to their use
@harisbal How much control do you want to have over the position of the nodes. Would it be convenient if you could specify the x and y position of each node?
@antoinerg controlling doesn't sound like a bad idea indeed. What I was thinking though is being able to control the number of "vertical" groups if that makes sense. For instance in the following example
I cannot place the "International aviation" node at the same vertical level as "Electricity grid" and "District heating" (in the picture I'm dragging it manually)
Ideally I would like to control how to group nodes (e.g. with a dictionary).
In the very nice implementation of ricklupton https://nbviewer.jupyter.org/github/ricklupton/ipysankeywidget/blob/master/examples/More%20examples.ipynb this is called rank sets
Thank you very much for checking on this.
@harisbal thank you for the link showing how to use ranksets. This is a really handy feature when one wants to order their sankey data according to a temporal layout - for example when plotting the evolution of communities that appear and disappear over time.
Reacted by harisbal, Gabriel (Gabu) Bellon, ryankinsey1 and Alex
In the meantime, PR #3583 (set to be released in 1.46.0) allows one to manually control the position of nodes either via dragging or by setting attributes node.(x|y). I am investigating providing control over the number of colums and ordering within them.
I endorse how interesting this feature would be.
I have work with d3 / d3-sankey "vanilla" and had problems with depth that in Plotly were solved.
However having a nodeAlign implementation for time series would help a lot.
Mainly to align the roots (eith no target links) more effectively.
I'm interested in this as well. What I would like to be able to is have 'terminal nodes' in the middle (i.e. some data flows end in the middle while other's flow through to the end and/or break down into further subgroups.)
This feature should not be hard to implement since it is supported in our dependencies. I started a branch a while ago https://github.com/plotly/plotly.js/compare/sankey2-node-align that shows what needs to be done. After resolving the conflicts, it might be good to go. I don't have the time to work on this at the moment but I can revisit later of help someone make a PR.
No one from the Plotly team is working on this at the moment but we’d be happy to accept a PR if someone wants to take Antoine’s work over the finish line :)
A community PR for this feature would certainly be welcome, but our experience is deeper features like this are difficult to complete without the Plotly maintainers leading the effort.
Sponsorship range: $5k-$10k
What Sponsorship includes:
Completion of this feature to the Sponsor's satisfaction, in a manner coherent with the rest of the Plotly.js library and API
Tests for this feature
Long-term support (continued support of this feature in the latest version of Plotly.js)
Same, tutorial examples in v5.19.0 are ignoring node alignment values. x and y values for nodes appear to also be ignored (EDIT: It looks like if y=0, the values are ignored, but non-zero y works). Thank you for the help--love the Sankey option!
Activity
etpinard commentedon Aug 8, 2017
cc @monfera
monfera commentedon Aug 8, 2017
@etpinard please tell me when to schedule it:
Some of our PRs to upstream
d3-sankeywere merged by Mike Bostock, so catching up makes sense for multiple reasons. One of our PRs predictably wasn't taken up, we'll need to reapply, likely not a lot of divergence yet. The alignment options should be exposed viaplotly.jsattributes in the JSON.etpinard commentedon Aug 8, 2017
Definitively not a high priority for now, unless @jackparmer thinks otherwise.
jackparmer commentedon Aug 8, 2017
Yeah, no customers on my radar who are asking about this. Probably shelve for now.
phillyo commentedon Mar 16, 2018
would be great to have this option! when visualizing process flows, it makes no sense that the terminal nodes are all on the right of the viz (as for those which did not pass the whole process, they should not be on the same level as all the nodes which did).
harisbal commentedon Jan 29, 2019
Would be a very welcome addition indeed :)
Not being able to control the position of nodes in the sankey diagram is unfortunately a big limitation to their use
antoinerg commentedon Jan 29, 2019
@harisbal How much control do you want to have over the position of the nodes. Would it be convenient if you could specify the
xandyposition of each node?harisbal commentedon Jan 30, 2019
@antoinerg controlling doesn't sound like a bad idea indeed. What I was thinking though is being able to control the number of "vertical" groups if that makes sense. For instance in the following example

I cannot place the "International aviation" node at the same vertical level as "Electricity grid" and "District heating" (in the picture I'm dragging it manually)
Ideally I would like to control how to group nodes (e.g. with a dictionary).
In the very nice implementation of ricklupton https://nbviewer.jupyter.org/github/ricklupton/ipysankeywidget/blob/master/examples/More%20examples.ipynb this is called rank sets
Thank you very much for checking on this.
JeroenSchmidt commentedon Mar 28, 2019
@harisbal thank you for the link showing how to use ranksets. This is a really handy feature when one wants to order their sankey data according to a temporal layout - for example when plotting the evolution of communities that appear and disappear over time.
harisbal commentedon Mar 28, 2019
@JeroenSchmidt that;s exactly the issue I'm facing, where I try to depict some temporal data (often disappearing between nodes).
antoinerg commentedon Mar 29, 2019
@JeroenSchmidt @harisbal Thank you for reminding me of the need for this worthwhile feature.
In the meantime, PR #3583 (set to be released in
1.46.0) allows one to manually control the position of nodes either via dragging or by setting attributesnode.(x|y). I am investigating providing control over the number of colums and ordering within them.gabubellon commentedon May 14, 2019
I endorse how interesting this feature would be.
I have work with d3 / d3-sankey "vanilla" and had problems with depth that in Plotly were solved.
However having a nodeAlign implementation for time series would help a lot.
Mainly to align the roots (eith no target links) more effectively.
evan-rash commentedon May 24, 2019
@antoinerg are there any updates on plans for specifying number of columns and ordering of nodes within those columns?
ryankinsey1 commentedon Jul 2, 2019
I'm interested in this as well. What I would like to be able to is have 'terminal nodes' in the middle (i.e. some data flows end in the middle while other's flow through to the end and/or break down into further subgroups.)
piccinnigius commentedon Dec 1, 2019
@antoinerg any update or trick to implement this? i want to put the terminal nodes by levels (aligned to left instead to right)
this:

instead of this:

it's bad to show this kind of things in production...
oooooooor how can export the full sankey data with fixed positions?
thanks so much for help!
antoinerg commentedon Dec 2, 2019
This feature should not be hard to implement since it is supported in our dependencies. I started a branch a while ago https://github.com/plotly/plotly.js/compare/sankey2-node-align that shows what needs to be done. After resolving the conflicts, it might be good to go. I don't have the time to work on this at the moment but I can revisit later of help someone make a PR.
tanvi-cota commentedon Jul 10, 2020
Do we have any update on this feature? Are we looking to work on this soon? This is a good feature, and already available in our dependency.
nicolaskruchten commentedon Jul 10, 2020
No one from the Plotly team is working on this at the moment but we’d be happy to accept a PR if someone wants to take Antoine’s work over the finish line :)
tanvi-cota commentedon Jul 11, 2020
@nicolaskruchten I would love to contribute, let me see how can i get that updated.
jackparmer commentedon Sep 10, 2020
This issue has been tagged with
NEEDS SPON$ORA community PR for this feature would certainly be welcome, but our experience is deeper features like this are difficult to complete without the Plotly maintainers leading the effort.
Sponsorship range: $5k-$10k
What Sponsorship includes:
Please include the link to this issue when contacting us to discuss.
KaranTrivedi commentedon Jan 10, 2023
Bump on this issue? \
bverem commentedon Mar 2, 2024
Same, tutorial examples in v5.19.0 are ignoring node alignment values. x and y values for nodes appear to also be ignored (EDIT: It looks like if y=0, the values are ignored, but non-zero y works). Thank you for the help--love the Sankey option!