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

线性颜色映射定制请求:0-1区间灰度线性,超范围显示红色

实现自定义颜色映射:0-1区间线性灰度+超范围红色

完全可以实现,下面以Python的matplotlib库为例,给出具体实现方案:

核心思路

  1. 先构建一个从纯黑到纯白的线性灰度颜色映射,覆盖0到1的数值区间;
  2. 单独指定所有小于0或大于1的数值,统一显示为红色。

代码实现

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

# 构建0-1区间的线性灰度渐变(黑→白)
gray_grad = [(0, 0, 0), (1, 1, 1)]
custom_cmap = LinearSegmentedColormap.from_list('gray_red', gray_grad, N=256)

# 设置超出[0,1]范围的颜色:小于0或大于1都显示红色
custom_cmap.set_under('red')
custom_cmap.set_over('red')

# 定义数值归一化规则,限定有效区间为[0,1]
norm = Normalize(vmin=0, vmax=1)

# 生成测试数据(包含<-0.5、0-1、>1.5的数值)
test_data = np.linspace(-0.5, 1.5, 100).reshape(10, 10)

# 可视化验证
fig, ax = plt.subplots(figsize=(8, 6))
im = ax.imshow(test_data, cmap=custom_cmap, norm=norm)
plt.colorbar(im, extend='both', label='数值')
plt.title('自定义颜色映射:0-1灰度渐变,超范围红色')
plt.show()

代码说明

  • LinearSegmentedColormap.from_list 快速创建了线性过渡的灰度映射,N=256 保证渐变的平滑度;
  • set_under 和 set_over 分别指定了低于最小值(0)和高于最大值(1)的颜色;
  • Normalize 用来把输入数值锚定在[0,1]区间,超出部分会自动触发超范围颜色设置。

如果用其他可视化库(如seaborn、plotly),核心逻辑类似:先定义正常区间的颜色渐变,再单独指定超范围的颜色规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:12:14