[英]list of colors between mulitiple colors in python
对于我的项目,我需要使用用户定义的颜色数显示从最小值到最大值的变量值。 该用户定义的变量(numberOfLevels)是5(5,10,15,20,25,...)的乘积。 但是,这并不容易,因为最终的调色板是多种颜色之间的一系列颜色。 因此,我有5种初始颜色的调色板,我想将其转换为40种颜色的调色板,其中颜色平均分配给5种初始颜色。
这是初始调色板的示例
paletteList = [
[Color("#ff0000"),
Color("#ff8000"),
Color("#ffff00"),
Color("#00ffff"),
Color("#0000ff")],
]
这是我制作出最终调色板的配方
numberOfLevels = 40
sizeOfBucket = int(numberOfLevels / 5)
for x in range(0, len(paletteList[0])-1 ):
templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket+1))
for m in templist:
res.append(m)
去除重复的颜色
for m in res:
if m not in templist:
templist.append(m)
这段代码的问题是当我问40种时它显示36种颜色
问题是您使用的是sizeOfBucket+1
,它是8 + 1 = 9,并且您正在运行range()
, range()
是0到5-1,这意味着range(0,4)将运行4次,所以您有9 * 4 = 36分。
相反,您应该执行以下操作以获得40种颜色:将range
作为range(0, len(paletteList[0]))
,这意味着range(0, 5)
range(0, len(paletteList[0]))
range(0, 5)
5次),并且range_to
应该使用为8的sizeOfBucket
。因此,现在您将拥有8 * 5 = 40种颜色。
numberOfLevels = 40
sizeOfBucket = int(numberOfLevels / 4)
for x in range(0, len(paletteList[0])-1 ):
templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket))
for m in templist:
res.append(m)
编辑2
numberOfLevels = 40
sizeOfBucket = int(numberOfLevels / 4)
for x in range(0, len(paletteList[0])-1):
if 0<x<len(paletteList[0])-2:
templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket+1))
else:
templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket))
for m in templist:
res.append(m)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.