桑基图蟒蛇

时间:2021-04-27 10:29:38

标签: python plotly-python

我正在尝试用 Python 制作一个如下所示的 sankey 图表:

figure

但是我遇到了麻烦,因为它会产生循环,如您所见:

figure1

我做错了什么?

我的脚本是:

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()

1 个答案:

答案 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 生成,因为它没有提供没有连接的节点的选项。