如何在Python中将一系列数字映射到RGB

时间:2019-08-07 18:45:44

标签: python colors

我想将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值。任何帮助。

1 个答案:

答案 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