如何以编程方式创建N个顺序等距颜色,范围从暗到亮

时间:2014-06-03 13:27:52

标签: python colors

我想创建一个N种不同颜色的渐变,从深色到浅色,所有视觉上都是等距的。

类似于this answer但是对于Python而不是R(虽然只能使用标准的lib,而不是例如.numpy)。

我想要一个函数,我可以将其作为参数给出深色,例如RGB(103,0,13)和浅色,例如RGB(255,245,240),以及阴影的数量。类似于ColorBrewer的输出(但在那里我无法定义两种结束颜色,我限制为最多9种颜色)。

enter image description here

编辑:到目前为止我尝试过:使用colorsys.rgb_to_hls(r, g, b)将RGB值转换为HLS,并在深色和浅色之间插入色调。

1 个答案:

答案 0 :(得分:2)

这是一种方式。但请注意,上面发布的示例渐变是某种非线性渐变。下面的函数会生成线性渐变。

def generateColorGradient(RGB1, RGB2, n):
    dRGB = [float(x2-x1)/(n-1) for x1, x2 in zip(RGB1, RGB2)]
    gradient = [tuple([int(x+k*dx) for x, dx in zip(RGB1, dRGB)]) for k in range(n)]
    return gradient

print generateColorGradient((103,0,13), (255,245,240), 9)

# OUTPUT
# [(103, 0, 13), (122, 30, 41), (141, 61, 69), (160, 91, 98), (179, 122, 126), (198, 153, 154), (217, 183, 183), (236, 214, 211), (255, 245, 240)]