Generating color ranges in Python

后端 未结 4 1537
失恋的感觉
失恋的感觉 2020-12-13 01:18

I want to generate a list of color specifications in the form of (r, g, b) tuples, that span the entire color spectrum with as many entries as I want. So for 5 entries I wou

相关标签:
4条回答
  • 2020-12-13 01:42

    I created the following function based on kquinn's answer.

    import colorsys
    
    def get_N_HexCol(N=5):
    
        HSV_tuples = [(x*1.0/N, 0.5, 0.5) for x in xrange(N)]
        hex_out = []
        for rgb in HSV_tuples:
            rgb = map(lambda x: int(x*255),colorsys.hsv_to_rgb(*rgb))
            hex_out.append("".join(map(lambda x: chr(x).encode('hex'),rgb)))
        return hex_out
    
    0 讨论(0)
  • 2020-12-13 01:46

    Following the steps of kquinn's and jhrf :)

    For Python 3 it can be done the following way:

    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
    
    0 讨论(0)
  • 2020-12-13 01:49

    Color palettes are interesting. Did you know that the same brightness of, say, green, is perceived more intensely than, say, red? Have a look at http://poynton.ca/PDFs/ColorFAQ.pdf. If you would like to use preconfigured palettes, have a look at seaborn's palettes:

    import seaborn as sns
    palette = sns.color_palette(None, 3)
    

    Generates 3 colors from the current palette.

    0 讨论(0)
  • 2020-12-13 01:54

    Use the HSV/HSB/HSL color space (three names for more or less the same thing). Generate N tuples equally spread in hue space, then just convert them to RGB.

    Sample code:

    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)
    
    0 讨论(0)
提交回复
热议问题