情节:如何在Sankey图中设置节点位置?

问题描述 投票:1回答:1

示例数据如下:

unique_list = ['home0', 'page_a0', 'page_b0', 'page_a1', 'page_b1', 
               'page_c1', 'page_b2', 'page_a2', 'page_c2', 'page_c3']
sources = [0, 0, 1, 2, 2, 3, 3, 4, 4, 7, 6]
targets = [3, 4, 4, 3, 5, 6, 8, 7, 8, 9, 9]
values = [2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2]

使用the documentation中的示例代码

fig = go.Figure(data=[go.Sankey(
    node = dict(
      pad = 15,
      thickness = 20,
      line = dict(color = "black", width = 0.5),
      label = unique_list,
      color = "blue"
    ),
    link = dict(
      source = sources,
      target = targets,
      value = values
  ))])

fig.show()

这将输出以下sankey图

enter image description here

但是,我想得到在同一垂直列中以相同数字结尾的所有值,就像最左边的列的所有节点都以0结尾一样。我在[C0 ]可以移动节点位置,但是我想知道是否有比手动输入x和y值更干净的方法来做到这一点。任何帮助表示赞赏。

python plotly
1个回答
0
投票

docs中设置go.Sankey()并调整arrangement='snap'x=<list>中的x​​和y位置。以下设置将按要求放置节点。但是对于其他数据集,它不是很灵活。这将需要更多的调整。

图:

y=<list>

请注意,在此示例中未明确设置y值。只要有一个以上的公共x值节点,y值就会自动调整,以使所有节点都显示在相同的垂直位置。如果您要明确设置所有位置,只需设置enter image description herearrangement='fixed'

完整代码:

© www.soinside.com 2019 - 2024. All rights reserved.