在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))
如果函数返回颜色的十六进制代码,我将非常感激。谢谢!
1条答案
按热度按时间wgeznvg71#
使用
hue = (1 - value) / 2
,看起来好像您正在生成整个范围的色调值,但这不是您想要的,因为色调决定颜色。我认为您希望限制范围,以便颜色逐渐从黄色变为正值的红色。您已经有了一个比例,因此您可以简单地乘以范围限制。例如,hue = (1 - value) / 2 * 0.3
为我们提供: