Generazione di gamme di colori in Python

2022-07-29 12:00:14

Voglio generare un elenco di specifiche del colore sotto forma di tuple (r, g, b), che coprono l'intero spettro dei colori con tutte le voci che voglio. Quindi per 5 voci vorrei qualcosa del tipo:

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

Ovviamente, se ci sono più voci rispetto alla combinazione di 0 e 1, dovrebbe utilizzare le frazioni, ecc. Quale sarebbe il modo migliore per farlo?

- Sverre Rabbelier

Source
Risposta


32
  • Utilizza lo spazio colore HSV/HSB/HSL (tre nomi per più o meno la stessa cosa). Genera N tuple equamente distribuite nello spazio tonalità, quindi convertile semplicemente in RGB.

    Codice di esempio:

    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)