我正在尝试用 Python 制作一个如下所示的 sankey 图表:
但是我遇到了麻烦,因为它会产生循环,如您所见:
我做错了什么?
我的脚本是:
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node = dict(
pad = 15,
thickness = 20,
line = dict(color = "black", width = 0.5),
label = ["A1", "A2", "A3", "A4", "A5", "A4", "A2", "A6", "A3", "A5"],
color = "blue"
),
link = dict(source = [0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
target = [0, 6, 8, 5, 9, 3, 1, 7, 2, 4],
value = [951, 795, 469, 408, 320, 1507 ,327 ,295, 288, 232]
))])
fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()
答案 0 :(得分:0)
将源列表的第 1 个值与目标列表的第 1 个值、源列表的第 2 个值与目标列表的第 2 个值等进行绘图连接。
这意味着绘制了以下几行:
来自 | 到 | |
---|---|---|
0 (A1) | 0 (A1) | 循环 |
1 (A2) | 6 (A2) | |
2 (A3) | 8 (A3) | |
3 (A4) | 5 (A5) | |
4 (A5) | 9 (A5) | |
0 (A1) | 3 (A3) | |
1 (A2) | 1 (A2) | 循环 |
2 (A3) | 7 (A6) | |
3 (A4) | 2 (A3) | |
4 (A5) | 4 (A5) | 循环 |
如您所见,线是从 A1 (idx 0) 到 A1 (idx 0)、从 A2 (idx 1) 到 A2 (idx 1) 以及从 A5 (idx 4) 到 A5 (idx 4) 绘制的。
问题中的绿橙色图不能用 plotly 生成,因为它没有提供没有连接的节点的选项。