我想创建一个N种不同颜色的渐变,从深色到浅色,所有视觉上都是等距的。
类似于this answer但是对于Python而不是R(虽然只能使用标准的lib,而不是例如.numpy)。
我想要一个函数,我可以将其作为参数给出深色,例如RGB(103,0,13)
和浅色,例如RGB(255,245,240)
,以及阴影的数量。类似于ColorBrewer的输出(但在那里我无法定义两种结束颜色,我限制为最多9种颜色)。
编辑:到目前为止我尝试过:使用colorsys.rgb_to_hls(r, g, b)
将RGB值转换为HLS,并在深色和浅色之间插入色调。
答案 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)]