首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中生成颜色范围

在Python中生成颜色范围
EN

Stack Overflow用户
提问于 2009-05-18 17:24:32
回答 5查看 57.2K关注 0票数 30

我想以(r,g,b)元组的形式生成一个颜色规范列表,它跨越整个颜色光谱,并包含任意多个条目。因此,对于5个条目,我希望如下所示:

  • (0,0,1)
  • (0,1,0)
  • (1,0,0)
  • (1,0.5,1)
  • (0,0,0.5)

F211

当然,如果有比0和1组合更多的条目,它应该使用分数,等等。这样做的最好方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-05-18 09:29:59

使用HSV/HSB/HSL颜色空间(三个名称或多或少相同的东西)。生成N个在色调空间中均匀分布的元组,然后将它们转换为RGB。

示例代码:

代码语言:javascript
复制
import colorsys
N = 5
HSV_tuples = [(x*1.0/N, 0.5, 0.5) for x in range(N)]
RGB_tuples = map(lambda x: colorsys.hsv_to_rgb(*x), HSV_tuples)
票数 58
EN

Stack Overflow用户

发布于 2018-03-06 21:51:34

调色板很有趣。你知道吗,同样的亮度,比方说绿色,比起红色,被感知得更强烈?看看http://poynton.ca/PDFs/ColorFAQ.pdf吧。如果您想使用预配置的调色板,请查看seaborn's palettes

代码语言:javascript
复制
import seaborn as sns
palette = sns.color_palette(None, 3)

从当前调色板生成3种颜色。

票数 27
EN

Stack Overflow用户

发布于 2017-11-09 12:50:29

遵循kquinn's和jhrf的步骤:)

对于Python 3,可以通过以下方式完成:

代码语言:javascript
复制
def get_N_HexCol(N=5):
    HSV_tuples = [(x * 1.0 / N, 0.5, 0.5) for x in range(N)]
    hex_out = []
    for rgb in HSV_tuples:
        rgb = map(lambda x: int(x * 255), colorsys.hsv_to_rgb(*rgb))
        hex_out.append('#%02x%02x%02x' % tuple(rgb))
    return hex_out
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/876853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档