在Python中生成颜色范围
我想生成一个颜色规格的列表,格式是(r, g, b)的元组,这些颜色要覆盖整个颜色范围,而且我希望有尽可能多的条目。比如说,如果我想要5个条目,我希望得到这样的结果:
- (0, 0, 1)
- (0, 1, 0)
- (1, 0, 0)
- (1, 0.5, 1)
- (0, 0, 0.5)
当然,如果条目的数量超过了0和1的组合,那就应该开始使用分数等等。这样做的最佳方法是什么呢?
5 个回答
14
按照kquinn和jhrf的步骤来做 :)
在Python 3中,可以这样操作:
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
44
颜色调色板很有趣。你知道吗?同样亮度的绿色,看起来比红色要更鲜艳、更明显。想了解更多,可以看看这个链接:http://poynton.ca/PDFs/ColorFAQ.pdf。如果你想使用一些已经配置好的调色板,可以看看seaborn的调色板:
import seaborn as sns
palette = sns.color_palette(None, 3)
这个代码会从当前的调色板中生成3种颜色。
62
使用HSV/HSB/HSL颜色空间(这三个名字其实指的差不多是同样的东西)。在色相空间中生成N个均匀分布的颜色组合,然后再把它们转换成RGB格式。
示例代码:
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)