[英]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.