![](/img/trans.png)
[英]Why is plotly's sankey diagram not plotting all my source nodes?
[英]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.