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

Matplotlib自定义不等区间插值颜色映射方法求助

实现Matplotlib分段自定义颜色映射

嘿,这事儿其实用Matplotlib的LinearSegmentedColormap就能轻松搞定!它专门用来创建这种带自定义关键点的分段插值颜色映射,完全符合你要的0-0.7、0.7-0.9、0.9-1三个区间的需求。下面直接上可运行的代码和细节解释:

步骤1:导入必要模块

首先得导入Matplotlib里的相关工具:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

步骤2:定义颜色关键点(注意归一化)

Matplotlib的颜色值是0-1之间的浮点数,所以要把你给的0-255 RGB值转成0-1的比例:

  • 0点:黑色 → (0, 0, 0)
  • 0.7点:红色 → (1, 0, 0)(255/255=1)
  • 0.9点:黄色 → (1, 1, 0)
  • 1点:绿色 → (0, 1, 0)

步骤3:构建分段颜色映射字典

我们需要给LinearSegmentedColormap传一个包含红、绿、蓝三个通道插值信息的字典,每个通道的列表里是(位置, 左颜色值, 右颜色值)的元组,这样就能指定每个区间的插值规则:

# 定义每个颜色通道的分段插值规则
color_dict = {
    'red': [
        (0.0, 0.0, 0.0),   # 0位置,左右颜色都是黑色的R值0
        (0.7, 1.0, 1.0),   # 0.7位置,左右颜色都是红色的R值1
        (0.9, 1.0, 1.0),   # 0.9位置,左右颜色都是黄色的R值1
        (1.0, 0.0, 0.0)    # 1位置,左右颜色都是绿色的R值0
    ],
    'green': [
        (0.0, 0.0, 0.0),   # 0位置,黑色G值0
        (0.7, 0.0, 0.0),   # 0.7位置,红色G值0
        (0.9, 1.0, 1.0),   # 0.9位置,黄色G值1
        (1.0, 1.0, 1.0)    # 1位置,绿色G值1
    ],
    'blue': [
        (0.0, 0.0, 0.0),   # 0位置,黑色B值0
        (0.7, 0.0, 0.0),   # 0.7位置,红色B值0
        (0.9, 0.0, 0.0),   # 0.9位置,黄色B值0
        (1.0, 0.0, 0.0)    # 1位置,绿色B值0
    ]
}

# 创建自定义颜色映射
custom_cmap = LinearSegmentedColormap('custom_segmented', color_dict)

步骤4:验证效果

可以用一个简单的示例来看看这个颜色映射的效果,比如生成一个渐变的色条:

# 创建一个从0到1的渐变数组
gradient = np.linspace(0, 1, 256).reshape(1, -1)

# 绘制色条
plt.figure(figsize=(10, 2))
plt.imshow(gradient, aspect='auto', cmap=custom_cmap)
plt.yticks([])
plt.title('Custom Segmented Colormap')
plt.show()

运行这段代码后,你就能看到从0到0.7是黑到红的渐变,0.7到0.9是红到黄的渐变,0.9到1是黄到绿的渐变,完全符合你的要求!

如果你需要把这个颜色映射用到自己的绘图(比如散点图、热力图)里,直接把cmap=custom_cmap传给对应的绘图函数就行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:02