You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Plotly Sankey图链接颜色渐变配置异常问题求助

问题:Plotly Sankey图链接颜色渐变未生效,全部显示默认浅灰色

我希望为Sankey图的链接应用颜色渐变效果,要求第一个链接为黄色、最后一个链接为蓝色,中间链接使用YlGnBu颜色渐变。以下是我的代码:

import plotly.graph_objects as go
fig = go.Figure(go.Sankey(
    arrangement = "snap",
    node = {
        "label": names,
        'pad':10,
        'color':'lightgray'
    },
    link = {
        "source": sources,
        "target": targets,
        "value": values,
        'colorscales' : [{'colorscale':'YlGnBu'}]
    }
))
fig.show()

Sankey图可正常显示且无报错,但所有链接均为默认浅灰色,请问问题出在哪里?感谢帮助。


解答

我来帮你排查这个问题!你遇到的问题是因为Plotly Sankey组件的颜色渐变参数使用有误,具体原因和修正方案如下:

问题根源

你代码里用了colorscales(复数)这个不存在的参数,而且没有为链接提供颜色映射的数值依据——Plotly需要知道用什么数值来对应渐变的颜色区间,否则会直接使用默认的浅灰色。

修正方案

要实现你想要的YlGnBu渐变效果(第一个链接黄,最后一个链接蓝),需要调整link字典里的参数:

  • 使用**单数形式的colorscale**指定渐变方案
  • 通过color参数提供一组数值,让Plotly根据这些数值映射颜色(可以用链接的values,也可以自定义索引数组)
  • 可选:用cmin和cmax固定渐变的范围,确保首尾链接对应渐变的两端

修改后的完整代码

import plotly.graph_objects as go

# 假设你已经定义了names, sources, targets, values变量
fig = go.Figure(go.Sankey(
    arrangement = "snap",
    node = {
        "label": names,
        'pad':10,
        'color':'lightgray'
    },
    link = {
        "source": sources,
        "target": targets,
        "value": values,
        # 用链接的索引作为颜色映射值,确保第一个链接对应最小值(黄),最后一个对应最大值(蓝)
        "color": list(range(len(values))),
        # 指定YlGnBu渐变方案
        "colorscale": "YlGnBu",
        # 明确设置颜色范围,固定渐变的首尾对应值
        "cmin": 0,
        "cmax": len(values)-1
    }
))
fig.show()

额外说明

如果你想基于链接的value大小来映射颜色(值越小越黄,值越大越蓝),只需要把color参数改成values即可:

"color": values,
"cmin": min(values),
"cmax": max(values)

这样修改后,你的Sankey链接就会呈现从黄色到蓝色的YlGnBu渐变效果啦!

内容的提问来源于stack exchange,提问作者A. A. Pedersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:09:06