Iโm having the toughest time getting a simple Sankey diagram to work using the Plotly library. The data are simple: Individuals are grouped in six different categories (UE,UI,EU,EI,IE,IU). Every month, individuals can move from one group to another. Rows have color values based on the category where individuals moved from.
The issue: Firstly, node labels simply donโt show up. Secondly, if I specify anything else than a single color for nodes (i.e. โredโ), all the nodes default to black. I have tried an arbitrary number of colors in a list, the same number as the number of nodes in the list and the actual desired output, i.e. 6 colors, one for each group.
Iโm really not sure what Iโm doing wrong here. Code:
"""
sample csv file
idx,rownum,this_month,next_month,this_flow,flow_source,next_flow,flow_target,count,color
0,268,201703,201704,UE,102,EI,107,50,"rgba(23, 190, 207, 0.8)"
1,272,201703,201704,UE,102,UE,108,636,"rgba(23, 190, 207, 0.8)"
2,276,201703,201704,UE,102,EU,109,453,"rgba(23, 190, 207, 0.8)"
3,280,201703,201704,UI,101,IU,111,30,"rgba(31, 119, 180, 0.8)"
4,284,201703,201704,UE,102,UI,112,15,"rgba(23, 190, 207, 0.8)"
5,267,201703,201704,IU,105,EI,107,1,"rgba(188, 189, 34, 0.8)"
6,271,201703,201704,IU,105,UE,108,57,"rgba(188, 189, 34, 0.8)"
7,275,201703,201704,IU,105,EU,109,15,"rgba(188, 189, 34, 0.8)"
8,279,201703,201704,EI,100,IU,111,30,"rgba(148, 103, 189, 0.8)"
9,283,201703,201704,IU,105,UI,112,18,"rgba(188, 189, 34, 0.8)"
10,266,201703,201704,IE,104,EI,107,438,"rgba(127, 127, 127, 0.8)"
11,270,201703,201704,IE,104,UE,108,29,"rgba(127, 127, 127, 0.8)"
12,274,201703,201704,IE,104,EU,109,29,"rgba(127, 127, 127, 0.8)"
13,278,201703,201704,UI,101,IE,110,29,"rgba(31, 119, 180, 0.8)"
14,282,201703,201704,IE,104,UI,112,1,"rgba(127, 127, 127, 0.8)"
15,265,201703,201704,EU,103,EI,107,9,"rgba(227, 119, 194, 0.8)"
16,269,201703,201704,EU,103,UE,108,576,"rgba(227, 119, 194, 0.8)"
17,273,201703,201704,EU,103,EU,109,431,"rgba(227, 119, 194, 0.8)"
18,277,201703,201704,EI,100,IE,110,612,"rgba(148, 103, 189, 0.8)"
19,281,201703,201704,EU,103,UI,112,16,"rgba(227, 119, 194, 0.8)"
"""
import plotly.graph_objects as go
import pandas as pd
# variables
source_id = df['flow_source'].values.tolist()
target_id = df['flow_target'].values.tolist()
ilo_source = df['this_flow'].values.tolist()
ilo_target = df['next_flow'].values.tolist()
this_month = df['this_month'].values.tolist()
next_month = df['next_month'].values.tolist()
count = df['count'].values.tolist()
color = df['color'].values.tolist()
# Sankey diagram
fig = go.Figure(data=[go.Sankey(
node = dict(
pad = 15,
thickness = 20,
line = dict(color = "black",width = 0.5),
label = ilo_source,
color = color
),
link = dict(
source = source_id,
target = target_id,
value = count
))])
fig.update_layout(title_text="Labour market flows",
font_size=15)
fig.show()
The output is black nodes and no labels.