python - 桑基图python
问题描述
我正在尝试在 Python 中制作一个如下所示的 sankey 图表:
但是我遇到了麻烦,因为它会产生循环,如您所见:
我究竟做错了什么?
我的脚本是:
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node = dict(
pad = 15,
thickness = 20,
line = dict(color = "black", width = 0.5),
label = ["A1", "A2", "A3", "A4", "A5", "A4", "A2", "A6", "A3", "A5"],
color = "blue"
),
link = dict(source = [0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
target = [0, 6, 8, 5, 9, 3, 1, 7, 2, 4],
value = [951, 795, 469, 408, 320, 1507 ,327 ,295, 288, 232]
))])
fig.update_layout(title_text="Basic Sankey Diagram", font_size=10)
fig.show()
解决方案
将源列表的第一个值与目标列表的第一个值连接起来,将源列表的第二个值与目标列表的第二个值连接起来,等等。
这意味着绘制以下线条:
从 | 至 | |
---|---|---|
0 (A1) | 0 (A1) | 环形 |
1 (A2) | 6 (A2) | |
2 (A3) | 8 (A3) | |
3 (A4) | 5 (A5) | |
4 (A5) | 9 (A5) | |
0 (A1) | 3 (A3) | |
1 (A2) | 1 (A2) | 环形 |
2 (A3) | 7 (A6) | |
3 (A4) | 2 (A3) | |
4 (A5) | 4 (A5) | 环形 |
如您所见,线是从 A1 (idx 0) 到 A1 (idx 0)、从 A2 (idx 1) 到 A2 (idx 1) 以及从 A5 (idx 4) 到 A5 (idx 4) 绘制的。
问题中的绿橙色图不能用 plotly 生成,因为它没有提供没有连接的节点的选项。
推荐阅读
- julia - Jupyter 或 Org 模式下的 Julia 调试器?
- powerbi - 如何在 Power BI 中组合两个页面级筛选器?
- python - 在 python 子进程中使用 ssh 时如何跳过横幅消息
- ios - 未找到 UIApplicationLaunchOptionsKey
- makefile - 预处理条件arch/make文件以获取非条件文件
- android - 在 afterTextChanged 中更改文本大小
- c# - 从 Xamarin.Android 中的导航抽屉打开新视图
- hangouts-chat - 环聊聊天未将我的机器人显示为用户
- laravel-5 - Yajra 数据表添加列
- mono - 为 Linux 或 windows c# 使用不同的库