我正在尝试用 python 创建热图。为此,我必须为可能值范围内的每个值分配一个 RGB 值。我想将颜色从蓝色(最小值)更改为绿色到红色(最大值)。
下面的图片示例解释了我对颜色组合的看法:我们的范围是从 1(纯蓝色)到 3(纯红色),2 介于两者之间,类似于绿色。
我阅读了有关线性插值的内容,并编写了一个函数(或多或少)处理最小值和最大值之间的某个值的计算并返回 RGB 元组。它用if
and elif
条件(这并不让我完全满意):
def convert_to_rgb(minimum, maximum, value):
minimum, maximum = float(minimum), float(maximum)
halfmax = (minimum + maximum) / 2
if minimum <= value <= halfmax:
r = 0
g = int( 255./(halfmax - minimum) * (value - minimum))
b = int( 255. + -255./(halfmax - minimum) * (value - minimum))
return (r,g,b)
elif halfmax < value <= maximum:
r = int( 255./(maximum - halfmax) * (value - halfmax))
g = int( 255. + -255./(maximum - halfmax) * (value - halfmax))
b = 0
return (r,g,b)
不过我想知道是否可以为每种颜色值编写一个函数without using if
状况。有人有想法吗?万分感谢!
def rgb(minimum, maximum, value):
minimum, maximum = float(minimum), float(maximum)
ratio = 2 * (value-minimum) / (maximum - minimum)
b = int(max(0, 255*(1 - ratio)))
r = int(max(0, 255*(ratio - 1)))
g = 255 - b - r
return r, g, b
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)