如何在cycler中使用颜色名称或RGB代码定义循环颜色?
解决cycler使用颜色名称/RGB重复指定次数的问题
你原来的写法只适用于单字符颜色代码,因为'k'*12会生成由12个'k'字符组成的字符串,cycle迭代时会逐个取出每个字符作为独立颜色值。但换成多字符颜色名称时,'gray1'*12会生成'gray1gray1...'这样的长字符串,cycle会逐个迭代单个字母,这显然不是你想要的效果。
正确的做法是用列表存储重复后的颜色项,再传给cycler,具体实现如下:
1. 使用颜色名称
直接将每个颜色名称重复12次后合并成列表,再传入cycler:
from cycler import cycler color_list = ['gray1'] * 12 + ['gold4'] * 12 + ['forestgreen'] * 12 + ['firebrick'] * 12 + ['dodgerblue4'] * 12 colors = cycler('color', color_list)
如果需要更清晰的代码结构,可以用extend方法逐个添加:
from cycler import cycler color_list = [] color_list.extend(['gray1'] * 12) color_list.extend(['gold4'] * 12) color_list.extend(['forestgreen'] * 12) color_list.extend(['firebrick'] * 12) color_list.extend(['dodgerblue4'] * 12) colors = cycler('color', color_list)
2. 使用RGB颜色代码
RGB颜色可以用0-1范围内的元组表示,同样按重复12次的逻辑构建列表:
from cycler import cycler # 示例RGB颜色,分别对应深灰、暗金、深绿、砖红、深蓝 rgb_color_list = [(0.1, 0.1, 0.1)] * 12 + [(0.6, 0.4, 0.0)] * 12 + [(0.0, 0.4, 0.0)] * 12 + [(0.6, 0.2, 0.2)] * 12 + [(0.0, 0.3, 0.6)] * 12 colors = cycler('color', rgb_color_list)
这样cycle就会按顺序依次取出每个完整的颜色名称或RGB元组,实现每种颜色重复12次的需求。
内容的提问来源于stack exchange,提问作者Martin7
相关产品推荐
相关产品推荐

