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

matplotlib自定义colormap工作原理及色阶范围设置问题

问题根因

你当前代码生成渐变颜色的核心原因是不了解Matplotlib自定义色卡字典cdict的参数逻辑:
每个颜色通道对应的元组格式为(x, y_left, y_right),其中x是归一化的输入值,y_left是输入值小于等于x时该通道的取值,y_right是输入值大于等于x时该通道的取值。如果相邻两个分界点的通道取值是连续的,Matplotlib会自动在两个点之间做线性插值,所以你会得到平滑过渡的效果。

正确实现代码

要实现分段纯色的阶跃效果,只需要在分界点位置设置同个通道的y_left和y_right为不同值,强制跳变即可,对应你的需求的配置如下:

from matplotlib.colors import LinearSegmentedColormap

cdict = {
    # 红色通道配置
    'red': [
        (0.0, 1.0, 1.0),
        (0.75, 1.0, 1.0),
        # 0.916分界处,左侧红为1,右侧直接跳为0
        (0.916, 1.0, 0.0),
        (1.0, 0.0, 0.0)
    ],
    # 绿色通道配置
    'green': [
        (0.0, 0.0, 0.0),
        # 0.75分界处,左侧绿为0,右侧直接跳为1
        (0.75, 0.0, 1.0),
        (0.916, 1.0, 1.0),
        (1.0, 1.0, 1.0)
    ],
    # 蓝色通道全程为0,不需要跳变
    'blue': [
        (0.0, 0.0, 0.0),
        (1.0, 0.0, 0.0)
    ]
}

# 生成自定义色卡
custom_cmap = LinearSegmentedColormap('custom_cmap', cdict)

效果说明

上述配置生成的色卡完全匹配你的需求:

  • 0 ≤ 输入值 < 0.75:红=1、绿=0、蓝=0,呈现纯红色
  • 0.75 ≤ 输入值 < 0.916:红=1、绿=1、蓝=0,呈现纯黄色
  • 0.916 ≤ 输入值 ≤ 1:红=0、绿=1、蓝=0,呈现纯绿色

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:03