gpt4 book ai didi

python - plotly 桑基 : why are nodes misplaced?

转载 作者:行者123 更新时间:2023-12-04 03:56:10 25 4
gpt4 key购买 nike

(Plotly 4.10.0、Python 3.8.0、Ubuntu 20.04)

我正在使用 Plotly Sankeys,但自动放置看起来很麻烦(可惜我无法手动放置节点)。

import plotly.graph_objects as go

sources = [ 0, 0, 1, 1, 2, 2]
targets = [ 1, 2, 3, 4, 5, 6]
values = [45, 30, 15, 30, 20, 10]
labels = ['Node 0', 'Node 1', 'Node 2', 'Node 3', 'Node 4', 'Node 5', 'Node 6']

link = dict(source=sources, target=targets, value=values)
node = dict(label=labels)
data = go.Sankey(link=link, node=node)
fig = go.Figure(data)
fig.show(renderer="svg", width=1000, height=500)

产生

wrong placement

为什么节点3错位了,没有和节点4放在一起?节点不按照排序值放置,否则节点3应该节点6之下。

只需将 Node1->3 的权重从 15 更改为 16,放置是正确的:

values  = [46, 30, 16, 30, 20, 10]

产生:

correct placement

我是不是漏掉了什么?

----------------------------------------

编辑:node_pad 是罪魁祸首吗?

原创

values  = [45, 30, 15, 30, 20, 10]
...
data = go.Sankey(link=link, node=node)

返回错误的放置。

data = go.Sankey(link=link, node=node, node_pad=9) 解决了这个问题。

使用 data = go.Sankey(link=link, node=node, node_pad=10) 它再次出现。

这看起来像是计算中的错误。我将打开一个问题。

最佳答案

我无法重现这个问题,所以我猜测 Plotly v4.10.0 的最新更新可能修复了这个错误。

import plotly.graph_objects as go

sources = [0, 0, 1, 1, 2, 2] #indices correspond to labels
targets = [1, 2, 3, 4, 5, 6]
values = [45, 30, 15, 30, 20, 10]
labels = ['Node 0', 'Node 1', 'Node 2', 'Node 3', 'Node 4', 'Node 5', 'Node 6']

link = dict(source=sources, target=targets, value=values)
node = dict(label=labels)
data = go.Sankey(link=link, node=node)
fig = go.Figure(data)
fig.show()
# fig.show(renderer="svg", width=1000, height=500)

enter image description here

如果我像您所说的那样彻底改变某些值,我们不应该期望节点位置发生变化。 values = [20, 30, 25, 30, 20, 10] 不会为我更改节点的位置:

enter image description here

关于python - plotly 桑基 : why are nodes misplaced?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63886267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com