为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村225694 2021-10-12 17:44:23
对于我的项目,我需要使用用户定义的颜色数显示从 min 到 max 的变量值。这个用户定义的变量(numberOfLevels) 是 5 (5,10,15,20,25,...) 的乘法。但是,这并不容易,因为最终的调色板是多种颜色之间的颜色范围。所以我有一个包含 5 种初始颜色的调色板,我想将其转换为具有 40 种颜色的调色板,其中颜色平均分为 5 种初始颜色。这是初始调色板的示例paletteList = [[Color("#ff0000"),Color("#ff8000"),Color("#ffff00"),Color("#00ffff"),Color("#0000ff")],]这是我制作的最终调色板的公式numberOfLevels = 40sizeOfBucket = 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 种颜色
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

问题是您使用的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 = 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)


查看完整回答
反对 回复 2021-10-12
  • 1 回答
  • 0 关注
  • 358 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信