簡體   English   中英

Plotly Sankey:為什么節點錯位?

[英]Plotly Sankey: why are nodes misplaced?

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

產生

錯誤的放置

為什么節點 3 錯位了,並且沒有與節點 4 放在一起? 節點不會根據排序值放置,否則節點 3低於節點 6

只需將Node1->3的權重從 15 更改為 16,放置是正確的:

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

產生:

正確放置

我在這里錯過了什么嗎?

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

編輯: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)

在此處輸入圖片說明

如果我像您所說的那樣徹底改變某些值,我們不應該期望節點位置發生變化。 values = [20, 30, 25, 30, 20, 10]不會改變我的節點位置:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM