簡體   English   中英

Plotly Sankey 圖,對齊節點

[英]Plotly Sankey Diagram, aligning nodes

我使用 plotly (python) 創建了一個桑基圖,它看起來像這樣:

如您所見,一些鏈接重疊,但這個圖可以很容易地(手動)更改為:

我認為重疊結果來自以 Y 為中心的第 3 列節點。有沒有辦法讓我將第 3 列與頂部(或底部)對齊來解決這個問題? (當然也歡迎任何其他修復)

我發現的唯一一件事是手動為節點設置 x 和 y,但我似乎無法只設置 y,這也將涉及計算所有這些坐標。

感謝您的幫助!

編輯:我的代碼

import plotly.graph_objects as go

sources = [23, 23, 23, 23, 23, 23, 23, 24, 8, 23, 23, 23, 30, 17, 5, 12, 20, 20, 23, 18, 18, 18, 18, 23, 33, 33, 33, 33, 33, 23, 16, 16, 23]
targets = [7, 13, 6, 21, 1, 2, 15, 23, 23, 32, 25, 19, 23, 23, 23, 23, 27, 22, 20, 31, 4, 0, 3, 18, 11, 26, 9, 14, 28, 33, 29, 10, 16]
values = [50.0, 1542.78, 287.44, 2619.76, 1583.26, 722.1, 5133.69, 6544.0, 2563.35, 6476.59, 4314.0, 82.87, 650.0, 1773.68, 16723.0, 32297.7, 81.64, 266.92, 348.56, 388.57, 743.2, 5403.24, 5821.52, 12356.53, 12905.68, 316.12, 497.68, 354.42, 3830.44, 17904.34, 175.95, 1224.46, 1400.41]

fig = go.Figure(data=[go.Sankey(
node = dict(
  pad = 5,
  thickness = 10,
  line = dict(color = "black", width = 0.5),
  label = list(range(len(values))),
  color = "blue"
),
link = dict(
  source = sources,
  target = targets,
  value  = values
))])

fig.update_layout(title_text=
"Basic Sankey Diagram", font_size=8)
fig.write_html("test.html")

github 上有一個未解決的問題,必須設置 x 和 y 位置才能使手動定位起作用。 手動添加 y 坐標和 x 坐標是否可以解決您的問題?

一般來說,sankey排序還有其他問題

我只在 plotly.R 中處理這方面的問題,所以恐怕我無法提供具體的 python 建議來修改你的代碼。

如果您還在尋找有關手動計算坐標的建議,您可以將其計算為

1 - (cumulative_sum_of_higher_nodes + current_node_size/2)

或者

1 - (cumulative_sum_of_all_nodes_including_current_node - current_node_size/2)

假設 y = 0 位於繪圖區域的底部。

暫無
暫無

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

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