2009-01-30 11 views
5

Ho una lista di valori numerici. Posso normalizzare i valori se necessario.Mappare un elenco di valori numerici a colori

Ho bisogno di trasformare questa lista in una lista di colori (in HSL, RGB o qualsiasi altro modello di colore — Posso sempre fare la conversione in seguito).

Per ogni valore specificato, il colore deve essere lo stesso ogni volta.

Più diversi sono i due valori numerici dati, maggiore deve essere il valore corrispondente del contrasto.

Tutti i colori utilizzati devono essere il più contrastanti possibile (questa è una limitazione morbida, soluzione approssimativa).

Nota che l'elenco è piuttosto grande (migliaia di numeri), quindi la semplice pressione di tutti i numeri in un singolo canale di colore produrrebbe risultati troppo densi.

risposta

2

Si potrebbe considerare l'utilizzo di un 3D space-filling curve attraverso lo spazio colore scelto. Aggiungerò il suggerimento di Mark CIELAB, vorrei aver saputo di quell'ultima volta che ho dovuto risolvere un problema simile.

0

Perché non utilizzare sfumature di grigio? Basta calcolare i valori min/max e usarli per tradurre ogni numero in una tonalità diversa da bianco a nero.

So che non sono i colori, ma a mio parere sarà più semplice interpretare i risultati. Posso dire che cosa significa quando qualcosa è più scuro o più leggero, ma chi è che, per esempio, il verde è un valore più alto dell'arancia?

+0

Probabilmente vuole le differenze assolute, non le differenze superiori/inferiori. 1, 10 e 100 potrebbero essere rosso, rosso-arancione e ciano, forse. – strager

+0

Ci sono troppi numeri (forse un migliaio), quindi le sfumature di grigio sarebbero troppo ravvicinate. –

1

See: How to automatically generate N "distinct" colors?

Sarebbe meglio per normalizzare i vostri valori e farli passare attraverso il codice ho suggerito (dove tonalità == vostro valore), la costruzione di una mappa/hash. (È possibile utilizzare invece una funzione in stile hash, che è probabilmente più efficiente.)

È possibile "randomizzare" la luminosità (o la luminosità, a seconda del modello) e la saturazione utilizzando alcuni bit predeterminati del proprio numero, ad esempio.

2

Qualunque algoritmo si stabilisca, si può provare lo spazio colore CIELAB. Normalizza le differenze nella percezione del colore umano, così che una spaziatura numerica uguale dà uguali differenze percettive.

Problemi correlati