我正在绘制一个sankey图,其中的值从1个开始节点到5个注释(a、B、C、D和E)。我希望节点按字母顺序绘制,我认为这可以通过我的代码来实现,但从运行我的代码中可以看出,情况并非如此-我如何确保A后面跟着B,B后面跟着C等等
我有Python3.9,并已详细更新到版本4.12.0,但没有帮助。我在Jupyter笔记本和Spyder(4.15)中都运行了代码,但是节点的顺序是关闭的-你能告诉我如何在代码中指定顺序吗
import plotly.graph_objects as go
import plotly.express as px
source = [0, 0, 0, 0, 0]
target = [1, 2, 3, 4, 5]
value = [356, 16, 39, 6, 88]
label = ['Start', 'A', 'B', 'C', 'D', 'E']
color_node = ['#EBBAB5',
'#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD']
color_link = ['#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD',
'#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD','#EBBAB5', '#FEF3C7', '#A6E3D7','#98FB98', '#DDA0DD']
link = dict(source=source, target=target, value = value, color = color_link)
node = dict(label = label, pad=30, thickness=5, color = color_node)
data = go.Sankey(link = link, node = node)
fig = go.Figure(data)
fig.show()
您可以使用this feature
例如,虽然这是相当手动的,但它确实做到了这一点:
我所做的只是指定节点的位置:
x==0
用于第一列,x==1
用于第二列。对于y
的第二列中的节点,我使用了0和1之间的偶数间距。我预计会有一些节点重叠,但plotly.js中的逻辑似乎为您解决了这一问题您可以通过指定两个标签列表以编程方式执行此操作:
但是,我不能保证它适用于更复杂的情况
相关问题 更多 >
编程相关推荐