【发布时间】:2023-12-07 01:59:01
【问题描述】:
我正在尝试使用 python 创建热图。为此,我必须为可能值范围内的每个值分配一个 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 条件为每个颜色值编写一个函数没有。有人有想法吗?非常感谢!
【问题讨论】:
标签: python colors rgb heatmap linear-interpolation