如何解决Python Plotly Sankey Diagram:如何根据“源”和“目标”计算“值”,以便所有行与节点的高度相同
所以我意识到这是一个非常具体的问题,但它一直困扰着我多年,我似乎找不到解决方案..
我正在使用 Plotly 和 Python 来生成 Sankey 图。我有以下来源、目标和价值数字:
source target value
0 0.0 5.0 1.0
1 0.0 6.0 1.0
2 1.0 6.0 1.0
3 2.0 7.0 1.0
4 3.0 8.0 1.0
5 4.0 8.0 1.0
6 5.0 9.0 1.0
7 6.0 10.0 1.0
8 7.0 9.0 1.0
9 8.0 9.0 1.0
10 9.0 11.0 1.0
11 9.0 12.0 1.0
12 9.0 13.0 1.0
13 10.0 13.0 1.0
14 10.0 14.0 1.0
15 11.0 15.0 1.0
16 12.0 15.0 1.0
17 12.0 16.0 1.0
18 13.0 16.0 1.0
19 14.0 17.0 1.0
20 15.0 18.0 1.0
21 15.0 19.0 1.0
22 16.0 18.0 1.0
23 17.0 19.0 1.0
产生以下 unsmoothed Sankey diagram
但是,你可以看到一些连接线和对应的节点不一样(例如从节点 i 流出的线比节点 i 短)。
令人讨厌的是,Plotly 似乎没有为您提供自动平滑节点线高度差异的选项。您可以使用简单的图表手动完成此操作,但对于像我所附的那样复杂的图表几乎是不可能的 - 更改一个部分的高度意味着您必须更改其他地方的高度等,因为一切都是如此相互关联
您知道我如何根据“源”和“目标”列表计算“价值”数字,以便在所有节点和线条上获得完美平滑吗? (例如像这个smoothed Sankey diagram)
我觉得必须有一种算法,无论源列表和目标列表是什么样的,都能给出完美的解决方案,但我想不通..
编辑:
创建图像的代码是:
link = dict(source = source,target = target,value = value_ones)
node = dict(label = label,pad=50,thickness=5)
data = go.Sankey(link = link,node=node)
fig = go.Figure(data)
fig.show()
label 只是一个包含唯一源值和升序数字 0-19 的字典
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。