从 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.
我有一个介于 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.