用绘图键填充所有可用空间
如果一些“分支”有三个级别(节点0->;节点1->;节点3),而其他只有两个级别(节点0->;节点2),则最后的节点(节点2和节点3)垂直向右对齐。
我希望能够垂直对齐节点1(而不是节点3!)和节点2,如附件中的第二个图所示
我很难通过编程方式对齐所有节点,因此我希望避免这种可能性
即使在前一种不希望出现的情况下,也会出现一些问题(Jupyter实验室的代码):
import plotly.graph_objects as go
sources = [ 0, 0, 1, 1]
targets = [ 1, 2, 3, 4]
values = [59, 30, 29, 30]
labels = ['Node 0', 'Node 1', 'Node 2', 'Node 3', 'Node 4']
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)
产生:
放置节点1时,似乎存在一个未考虑节点0->;厚度的错误;2流动
是否可以判断我希望节点2位于节点1的同一垂直线上,并且节点2没有子节点? 解决方案是手动放置,可惜我不能这样做,因为我的Sankey是高度动态的
作为一种解决方法,我在节点2之后创建了一个虚拟节点,并使其不可见:
import plotly.graph_objects as go
sources = [ 0, 0, 1, 1, 2]
targets = [ 1, 2, 3, 4, 5]
values = [59, 30, 29, 30, 30]
labels = ['Node 0', 'Node 1', 'Node 2', 'Node 3', 'Node 4']
color_links = ["lightgray", "lightgray", "lightgray", "lightgray", "white"]
color_nodes = ["red", "blue", "green", "navy", "lightgreen", "white"]
link = dict(source=sources, target=targets, value=values, color=color_links)
node = dict(label=labels, color=color_nodes, line = dict(width = 0))
data = go.Sankey(link=link, node=node)
fig = go.Figure(data)
fig.show(renderer="svg", width=1000, height=500)
这将产生:
我希望有一个更好更简单的方法来做到这一点。 是否有指向正在运行的演示的指针
目前没有回答
相关问题 更多 >
编程相关推荐