问题描述
使用Plotly库获取一个简单的Sankey图可以使我最困难。数据很简单: 个人分为六个不同类别(UE,UI,EU,EI,IE,IU)。 每个月,个人都可以从一个小组转移到另一个小组。 行具有基于个人所移居类别的颜色值。
问题: 首先,节点标签根本不显示。其次,如果我为节点指定了除单色以外的任何颜色(即“红色”),则所有节点默认为黑色。我尝试了一个列表中任意数量的颜色,该颜色与列表中的节点数量以及实际所需的输出数量相同,即6种颜色,每组一种。
我真的不确定我在做什么错。代码:
"""
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,108,636,0.8)"
2,276,EU,109,453,0.8)"
3,280,UI,101,IU,111,30,"rgba(31,119,180,0.8)"
4,284,112,15,0.8)"
5,267,105,1,"rgba(188,189,34,0.8)"
6,271,57,0.8)"
7,275,0.8)"
8,279,100,"rgba(148,103,0.8)"
9,283,18,0.8)"
10,266,IE,104,438,"rgba(127,127,0.8)"
11,270,29,0.8)"
12,274,0.8)"
13,278,110,0.8)"
14,282,0.8)"
15,265,9,"rgba(227,194,0.8)"
16,269,576,0.8)"
17,273,431,0.8)"
18,277,612,0.8)"
19,281,16,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()
这是输出-黑色节点,没有标签。在Google Colab和VSCode中结果相同:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)