Plotly Sankey图表:颜色默认为黑色,标签不显示

2024-03-28 14:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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,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()

这是输出-黑色节点,没有标签。Google Colab和VSCode中的结果相同:

enter image description here


Tags: uisourcetargetdfflowiecolorvalues