从 0 到 1 创建和映射从白色到红色的 RGB 颜色渐变

Create and map RGB color gradient from white to red from 0 to 1

我有一个介于 0 和 1 之间的值列表(或 np.array),例如

_list = np.arange(0, 1, 0.05)
print(_list)

>>>
[0.   0.05 0.1  0.15 0.2  0.25 0.3  0.35 0.4  0.45 0.5  0.55 0.6  0.65
 0.7  0.75 0.8  0.85 0.9  0.95]

如何将平滑的颜色渐变映射到此列表,其中 0 表示白色 (rgb(255,255,255)),1 表示红色 (rgb(255,0,0)),以及介于两者之间的所有其他值介于两者之间的颜色?

我已经检查过 matplotlib.colors 但我在那里找不到任何相关内容。我发现 local topics 讨论了类似的事情,但它们都与策划有关。我是不是遗漏了什么,或者真的不是那么微不足道?

假设您正在寻找像 rgb(255,255,255) 这样的字符串列表,您可以使用这样的列表理解:

import numpy as np

values = np.arange(0, 1, 0.05)
print(values)
colors = [f"rgb(255, {round(v*255)}, {round(v*255)})" for v in values]
print(colors)

输出为:

[0.   0.05 0.1  0.15 0.2  0.25 0.3  0.35 0.4  0.45 0.5  0.55 0.6  0.65
 0.7  0.75 0.8  0.85 0.9  0.95]
['rgb(255, 0, 0)', 'rgb(255, 13, 13)', 'rgb(255, 26, 26)', 'rgb(255, 38, 38)', 'rgb(255, 51, 51)', 'rgb(255, 64, 64)', 'rgb(255, 77, 77)', 'rgb(255, 89, 89)', 'rgb(255, 102, 102)', 'rgb(255, 1
15, 115)', 'rgb(255, 128, 128)', 'rgb(255, 140, 140)', 'rgb(255, 153, 153)', 'rgb(255, 166, 166)', 'rgb(255, 179, 179)', 'rgb(255, 191, 191)', 'rgb(255, 204, 204)', 'rgb(255, 217, 217)', 'rgb(
255, 230, 230)', 'rgb(255, 242, 242)']

我会这样做:

import numpy as np
_list = np.arange(0, 1, 0.05)
rgbVals = list(map(lambda x: np.subtract([255,255,255], x*np.array([0,255,255])), _list))

此代码从 [255,255,255](白色)中减去 _list[0,255,255] 的因子,这意味着如果元素为 1 或 [=11=,则输出 [255,0,0] ] 如果元素是0.