2009-01-30 19 views
5

Tengo una lista de valores numéricos. Puedo normalizar los valores si es necesario.Asignación de una lista de valores numéricos a los colores

Necesito transformar esta lista en una lista de colores (en HSL, RGB o cualquier otro modelo de color — siempre puedo hacer la conversión).

Para cualquier valor dado, el color debe ser siempre el mismo.

Cuanto más diferentes sean dos valores numéricos dados, mayor será el contraste de los valores correspondientes.

Todos los colores usados ​​deben estar lo más contrastados posible (esto es una limitación suave, una solución aproximada).

Tenga en cuenta que la lista es bastante grande (miles de números), por lo que simplemente exprimir todos los números en un solo canal de color produciría resultados demasiado densos.

Respuesta

2

Podría considerar el uso de un 3D space-filling curve a través del espacio de color elegido. Responderé a la sugerencia de Mark CIELAB, ojalá hubiera sabido sobre la última vez que tuve que resolver un problema similar.

0

¿Por qué no utilizar tonos de gris? Simplemente calcule los valores mínimos/máximos y úselos para traducir cada número en un tono diferente del blanco al negro.

Sé que no son colores, pero en mi opinión, será más fácil interpretar los resultados. Puedo decir lo que significa cuando algo es más oscuro o más claro, pero ¿quién puede decir que, por ejemplo, el verde tiene un valor más alto que el naranja?

+0

Probablemente quiera diferencias absolutas, diferencias no mayores ni menores. 1, 10 y 100 serían rojo, rojo anaranjado y cian, quizás. – strager

+0

Hay demasiados números (quizás mil), por lo que los tonos de gris estarían muy juntos. –

1

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

Sería mejor para normalizar sus valores, y ejecutarlos a través del código sugerí (donde tonalidad == su valor), la construcción de un mapa/hash. (En su lugar, puede usar una función de estilo hash, que probablemente sea más eficiente.)

Puede "aleatorizar" la luminosidad (o el brillo, según su modelo) y la saturación usando algunos bits predeterminados de su número, por ejemplo.

2

Independientemente del algoritmo con el que se asiente finalmente, puede probar el espacio de color CIELAB. Normaliza las diferencias en la percepción del color humano, por lo que el espaciado numérico igual da las mismas diferencias perceptuales.

Cuestiones relacionadas