Я пытаюсь создать тепловую карту с питоном. Для этого мне нужно присвоить значение RGB каждому значению в диапазоне возможных значений. Я думал об изменении цвета от синего (минимальное значение) от зеленого до красного (максимальное значение).
В приведенном ниже примере рисунка объясняется, как я думал о цветовой композиции: у нас есть диапазон от 1 (чистый синий) до 3 (чистый красный), 2 находится между ними наподобие зеленого.
Я читал о линейной интерполяции и написал функцию, которая (более или менее) обрабатывает вычисление для определенного значения в диапазоне между минимумом и максимумом и возвращает кортеж RGB. Он использует условия if
и 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)
Однако мне интересно, можно ли написать функцию для каждого значения цвета без, используя условия if
. У кого-нибудь есть идея? Большое вам спасибо!