节点标签未出现在 Python Plotly 的 Sankey 中

问题描述

使用 Python Plotly 尝试我的第一个桑基流程图。桑基流程图与正确的源和目标完美结合。但我无法包含节点标签标签位于数据框内。如果没有各种来源和目标的标签,图表是不完整的。这是我使用的代码。我的目标是得到一个静态图。

{link = dict(source = Service_df,target=Manufac_df,value=Revenue_df)}
{node = dict(label=Label_df,pad=50,thickness=5)}
{data = dict(type = 'sankey',hoverinfo = 'all',link = link,node=node)}
{fig = go.figure(data)}
{fig.show() }

后来,我尝试硬编码源和目标的标签。这也不起作用。

当我将鼠标悬停在图表上时,我收到消息来源:未定义目标:未定义。同时,当鼠标悬停在 Source 或 Target 时,可以看到传入和传出的流量计数。

我正在 Jupyter Notebook Python 3.8.5 中尝试这个

数据框如下:

{MainData.info()}

范围索引:31 个条目,0 到 30 数据列(共3列):

列非空计数数据类型


0 服务 31 非空 int64
1 制造商 31 非空 int64
2 收入 31 非空 float64 数据类型:float64(1)、int64(2)

{LabelData.info()}

范围索引:10 个条目,0 到 9 数据列(共1列):

列非空计数数据类型


0 标签 10 非空对象 数据类型:对象(1)

我得到的图像在这里https://drive.google.com/drive/folders/1QDc-qVyMYSTJNI0coNJf8Ehuq8tlL-mP?usp=sharing

解决方法

如果没有看到您的数据框,我会假设您的 Label_df 的形状/大小与 link 中的数据框不同。

import pandas as pd
import plotly.graph_objects as go

# mock data,identical to the plotly documentation https://plotly.com/python/sankey-diagram/
Label_df = pd.DataFrame(["A1","A2","B1","B2","C1","C2"])
Service_df = pd.DataFrame([0,1,2,3,3])
Manufac_df = pd.DataFrame([2,4,5])
Revenue_df = pd.DataFrame([8,8,2])

link = dict(source = Service_df[0],target=Manufac_df[0],value=Revenue_df[0])
# this works
node = dict(label=Label_df[0],pad=50,thickness=5)
data = dict(type='sankey',hoverinfo='all',link=link,node=node)
fig = go.Figure(data)
fig.show()

# this gives Source:Undefined Target:Undefined
node = dict(label=list(Label_df[0]),node=node)
fig = go.Figure(data)
fig.show()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...