2009-01-30 11 views
5

J'ai une liste de valeurs numériques. Je peux normaliser les valeurs si nécessaire.Mappage d'une liste de valeurs numériques à des couleurs

Je dois transformer cette liste en une liste de couleurs (en HSL, RVB ou tout autre modèle de couleur — Je peux toujours faire la conversion plus tard).

Pour une valeur donnée, la couleur doit être la même à chaque fois.

Plus les deux valeurs numériques données sont différentes, plus les valeurs correspondantes doivent être contrastées.

Toutes les couleurs utilisées doivent être aussi contrastées que possible (c'est une limitation douce, une solution approximative ferait l'affaire).

Notez que cette liste est plutôt volumineuse (des milliers de nombres), donc presser simplement tous les nombres dans un seul canal de couleur produirait des résultats trop denses. Pourquoi ne pas utiliser des nuances de gris?

Répondre

2

Vous pouvez envisager d'utiliser un 3D space-filling curve dans l'espace colorimétrique choisi. Je vais seconder la suggestion de Mark, j'aimerais savoir à ce sujet la dernière fois que j'ai dû résoudre un problème similaire.

0

Il suffit de calculer les valeurs min/max et de l'utiliser pour traduire chaque nombre dans une nuance différente du blanc au noir. Je sais que ce ne sont pas les couleurs, mais à mon avis, il sera plus facile d'interpréter les résultats. Je peux dire ce que cela signifie quand quelque chose est plus sombre ou plus léger, mais qui peut dire que, par exemple, le vert est une valeur plus élevée que l'orange?

+0

Il veut probablement des différences absolues, pas des différences plus élevées/plus faibles. 1, 10 et 100 serait rouge, rouge-orange et cyan, peut-être. – strager

+0

Il y a trop de nombres (peut-être un millier), donc les nuances de gris seraient trop rapprochées. –

1

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

Il serait préférable de normaliser vos valeurs, et de les exécuter par le code que je suggérais (où la teinte == votre valeur), la construction d'une carte/hachage. (Vous pouvez utiliser à la place une fonction de style de hachage, probablement plus efficace.)

Vous pouvez "randomiser" la luminosité (ou la luminosité, selon votre modèle) et la saturation en utilisant des bits prédéterminés de votre numéro, par exemple.

2

Quel que soit l'algorithme que vous définissez, vous pouvez essayer l'espace colorimétrique CIELAB. Il normalise les différences dans la perception des couleurs humaines, de sorte qu'un espacement numérique égal donne des différences perceptives égales.

Questions connexes