plotly.py
plotly.py copied to clipboard
Sankey node x and y positions require both variables set to reflect in chart.
This is somewhat of a duplicate of #960 and #1437 but slightly more hopeful :)
The x and y arguments of the nodes dict do successfully control node location, however -- it appears that both arguments must be supplied.
import dash
import dash_core_components as dcc
import dash_html_components as html
f#rom dash.dependencies import Output, Input, State
import plotly.graph_objs as go
#import pandas as pd
app = dash.Dash()
app.layout = html.Div([
dcc.Graph(
id = 'wut',
figure={
'data' : [
dict(
type='sankey',
#domain =
arrangement = 'fixed',
node = dict(
pad = 15,
thickness = 20,
line = dict(color = "black", width = 0.5),
label = ["A1", "A2", "B1", "B2", "C1", "C2"],
x = [0.1, 0.2, 0.24, 0.7, 0.8, .9],
y = [0, .2, .3, .4, .5, .6],
color = "blue"
),
link = dict(
source = [0, 1, 0, 2, 3, 3], # indices correspond to labels, eg A1, A2, A2, B1, ...
target = [2, 3, 3, 4, 4, 5],
value = [8, 4, 2, 8, 4, 2]
))
]}
)])
if __name__ == '__main__':
app.run_server(debug=True)
VS.
import dash
import dash_core_components as dcc
import dash_html_components as html
f#rom dash.dependencies import Output, Input, State
import plotly.graph_objs as go
#import pandas as pd
app = dash.Dash()
app.layout = html.Div([
dcc.Graph(
id = 'wut',
figure={
'data' : [
dict(
type='sankey',
#domain =
arrangement = 'fixed',
node = dict(
pad = 15,
thickness = 20,
line = dict(color = "black", width = 0.5),
label = ["A1", "A2", "B1", "B2", "C1", "C2"],
###x = [0.1, 0.2, 0.24, 0.7, 0.8, .9],
y = [0, .2, .3, .4, .5, .6],
color = "blue"
),
link = dict(
source = [0, 1, 0, 2, 3, 3], # indices correspond to labels, eg A1, A2, A2, B1, ...
target = [2, 3, 3, 4, 4, 5],
value = [8, 4, 2, 8, 4, 2]
))
]}
)])
if __name__ == '__main__':
app.run_server(debug=True)
+1 for the possibility to define x coordinates only.
That would still be a super helpful feature!
Is there a way to at least obtain the nodes position after the chart creation?
This way, a workaround could be:
- let the nodes positions be the default ones
- get these positions
- modifiy the positions a posteriori
Is there a way to at least obtain the nodes position after the chart creation?
This way, a workaround could be:
- let the nodes positions be the default ones
- get these positions
- modifiy the positions a posteriori
That would still be helpful or has this been done?
That would indeed be a helpful workaround, haven't found a way to retrieve coordinates so far, anyone else?
I'm also trying to get the node positions, but to no avail. The choice between 'freeform', 'fixed', and 'snap' doesn't seem to matter for this.