桑基图的情节是空的

Plot for sankey diagram is empty

Empty plot

我是 python/spyder 的新手,我正在尝试制作桑基图,但图中没有数据,它只是空的。我发现我需要从数据框转换为列表,但这没有帮助,而且情节仍然是空的。我保持它非常简单,几乎直接从 plotly 的指南中复制它,然后导入我自己的数据。 这是我的代码,我刚刚删除了文件路径。 谁能告诉我我的错误是什么? 编辑以添加 xlsx 文件的图像:xlsx file
编辑新 Plot

的 2 张图片
import plotly.graph_objects as go
import pandas as pd
# go.renderers.default = "browser"
df = pd.read_excel (r'C:\filepath\data.xlsx') 

labels=pd.DataFrame(df, columns= ['Label'])
label_list=labels.values.tolist()
sources=pd.DataFrame(df, columns= ['Source'])
source_list=sources.values.tolist()
targets=pd.DataFrame(df, columns= ['Target'])
target_list=targets.values.tolist()
values=pd.DataFrame(df, columns= ['Value'])
value_list=values.values.tolist()


fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = label_list,
      color = "blue"
    ),
    link = dict(
      source = source_list, 
      target = target_list,
      value = value_list
  ))])

fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()

请使用随机数据检查代码段。

当您阅读 excel 时,它只会给您 dataframe。您不需要再次将其存储到 dataframe.

您也不需要将其转换为 list。您可以将数据框列直接传递给 label,source,value and target

import plotly.graph_objects as go
import pandas as pd
df = pd.read_excel (r'data.xlsx')
print(df)
"""
  Label  Source  Target  Value
0    A1       0       2      8
1    A2       1       3      4
2    B1       0       3      2
3    B2       2       4      8
4    C1       3       4      4
5    C2       3       5      2
"""
fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = df['Label'],
      color = "blue"
    ),
    link = dict(
      source = df['Source'],
      target = df['Target'],
      value = df['Value']
  ))])

fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()

小贴士

您的 labels_list, source_list, target_list, value_list 不是 list。这是一个 nested list.

如果您想将 dataframe 列存储到列表中,那么您可以这样做,

labels_list=df['Label'].tolist()
source_list=df['Source'].tolist()
target_list=df['Target'].tolist()
value_list=df['Value'].tolist()

更多详情可以参考 Sankey Diagram Plotly