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

对于我的项目,我需要使用用户定义的颜色数显示从 min 到 max 的变量值。这个用户定义的变量(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)

这段代码的问题是它显示了 36 种颜色,而我要求显示 40 种颜色


慕村225694
浏览 363回答 1
1回答

陪伴而非守候

问题是您使用的sizeOfBucket+1是 8+1 = 9 并且您正在range()从 0 到 5-1运行,这意味着 range(0, 4) 将运行 4 次,因此您有 9*4 = 36 点。相反,您应该执行以下操作以获得 40 种颜色:运行rangeasrange(0, len(paletteList[0]))这意味着range(0, 5)(0, 1, 2, 3, 4 所以总共 5 次) 并且range_to应该使用sizeOfBucketwhich 是 8. 所以现在你将有 8*5 = 40 种颜色。numberOfLevels = 40sizeOfBucket = int(numberOfLevels / 4)for x in range(0, len(paletteList[0])-1 ):&nbsp; &nbsp; templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket))&nbsp; &nbsp; for m in templist:&nbsp; &nbsp; &nbsp; &nbsp; res.append(m)编辑 2numberOfLevels = 40sizeOfBucket = int(numberOfLevels / 4)for x in range(0, len(paletteList[0])-1):&nbsp; &nbsp; if 0<x<len(paletteList[0])-2:&nbsp; &nbsp; &nbsp; &nbsp; templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket+1))&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket))&nbsp; &nbsp; for m in templist:&nbsp; &nbsp; &nbsp; &nbsp; res.append(m)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python