繁体   English   中英

python中多种颜色之间的颜色列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM