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