【问题标题】:Create and map RGB color gradient from white to red from 0 to 1从 0 到 1 创建和映射从白色到红色的 RGB 颜色渐变
【发布时间】:2021-06-10 13:18:56
【问题描述】:

我有一个介于 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 讨论了类似的事情,但它们都与绘图有关。是我遗漏了什么,还是真的没有那么微不足道?

【问题讨论】:

    标签: python colors


    【解决方案1】:

    假设您正在寻找像 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)']
    

    【讨论】:

    • 谢谢!我没有意识到我可以线性缩放 G & B 值...
    【解决方案2】:

    我会这样做:

    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))
    

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

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 2012-11-01
      • 2019-12-14
      • 2018-02-13
      • 1970-01-01
      • 2013-09-27
      • 1970-01-01
      • 2021-01-12
      • 2011-04-08
      相关资源
      最近更新 更多