我想将0-3的数字范围映射到rgb颜色。
我看过这样的帖子:Map a range of values (e.g. [0,255]) to a range of colours (e.g. rainbow: [red,blue]) in JavaScript,但我不知道如何将其转换为python并在我的情况下使用它。
我希望输出为0到3之间的特定数字的rgb值。任何帮助。
答案 0 :(得分:1)
您可以将链接的帖子中的this answer转换为python:
import math
def num_to_rgb(val, max_val=3):
i = (val * 255 / max_val);
r = round(math.sin(0.024 * i + 0) * 127 + 128);
g = round(math.sin(0.024 * i + 2) * 127 + 128);
b = round(math.sin(0.024 * i + 4) * 127 + 128);
return (r,g,b)
print(num_to_rgb(1.32))
>> (183, 1, 179)
这将返回三个整数(r,g,b)的元组。
确保不允许输入无效也是一个好主意(aka负数,或val> max_val):
def num_to_rgb(val, max_val=3):
if (val > max_val):
raise ValueError("val must not be greater than max_val")
if (val < 0 or max_val < 0):
raise ValueError("arguments may not be negative")
i = (val * 255 / max_val);
r = round(math.sin(0.024 * i + 0) * 127 + 128);
g = round(math.sin(0.024 * i + 2) * 127 + 128);
b = round(math.sin(0.024 * i + 4) * 127 + 128);
return (r,g,b)
print(num_to_rgb(4.32))
>> ValueError: val must not be greater than max_val