如何根据 python 中的输入值获得不同深浅的红色?

问题描述 投票:0回答:2

在 python 中,如何根据 -1 和 1 之间的输入值获得不同深浅的红色/黄色?如果该值介于 -1 和 0 之间,则该函数应返回黄色。 如果该值介于 0 和 1 之间,则该函数应返回各种级别或红色阴影。更具体地说,如果值为 0,那么返回的颜色应该是标准的红色#FF0000,但是如果它是 1,那么返回的值应该是淡红色。

我下面的代码显示的颜色并不总是红色(或看起来不是红色)。

import colorsys
import matplotlib.colors as mc

def get_red_shade(value):
    if value < -1 or value > 1:
        raise ValueError("Input value must be between -1 and 1")
    
    if value <= 0:
        # For values between -1 and 0, return yellow
        return '#ffff00'
    
    # Convert the input value to a hue value between 0 and 1
    hue = (1 - value) / 2
    
    # Convert the hue value to an RGB value
    r, g, b = colorsys.hsv_to_rgb(hue, 1, 1)
    
    # Convert the RGB value to a hex code
    return mc.to_hex((r, g, b))

如果函数返回颜色的十六进制代码,我将不胜感激。谢谢!

python matplotlib colors hex rgb
2个回答
1
投票

使用

hue = (1 - value) / 2
,看起来好像您正在生成整个色调值范围,但这不是您想要的,因为色调决定了颜色。我想你想限制范围,以便颜色逐渐从黄色变为正值的红色。你已经有了一个比例,所以你可以简单地乘以范围限制。例如,
hue = (1 - value) / 2 * 0.3
给我们:


0
投票

使用 colorir 你可以在 0 和 1 之间插入一个渐变

>>> grad = Grad(["ff0000", "fff0f0"])
>>> grad.perc(0)
    "#ff0000"
>>> grad.perc(1)
    "#fff0f0"

运行

swatch(grad)
将在终端打印它:

© www.soinside.com 2019 - 2024. All rights reserved.