Mapeamento de uma lista de valores numéricos para cores
-
20-08-2019 - |
Pergunta
Eu tenho uma lista de valores numéricos. I pode normalizar os valores, se necessário.
Eu preciso transformar essa lista para uma lista de cores. (Em HSL, RGB ou qualquer outro modelo de cor - Eu sempre pode fazer a conversão mais tarde)
Para qualquer dado valor a cor deve ser o mesmo de cada vez.
As duas dadas valores numéricos mais diferentes são os valores que correspondem a mais de contraste devem ser.
Todas as cores utilizadas devem ser como o contraste entre si quanto possível (isso é uma limitação macio, solução áspera faria).
Note que a lista é bastante grande (milhares de números), tão simplesmente apertando todos os números em um único canal de cor produziria resultados muito densas.
Solução
Você poderia considerar o uso de um 3D compilando curva através de seu espaço de cor escolhida . Eu vou segunda CIELAB sugestão de Mark, desejo que eu tinha sabido sobre a última vez que eu tinha que resolver um problema semelhante.
Outras dicas
Whatever algoritmo que você finalmente resolver, você pode tentar o CIELAB espaço de cor. Normaliza as diferenças de percepção de cor humana, de modo que o espaçamento numérico igual dá iguais diferenças de percepção.
Veja: Como gerar automaticamente N cores "diferentes"
Seria melhor para normalizar seus valores, e executá-los através do código sugeri (onde matiz == seu valor), a construção de um mapa / hash. (Você pode usar uma função de estilo de hash em vez disso, que é provavelmente mais eficiente.)
Você pode "Randomize" luminosidade (ou brilho, dependendo do modelo) e saturação usando alguns bits predeterminados do seu número, por exemplo.
Por que não usar tons de cinza? Apenas calcular os valores min / max e usar isso para traduzir cada número em um tom diferente do branco ao preto.
Eu sei que não é cores, mas na minha opinião vai ser mais fácil para interpretar os resultados. Eu posso dizer o que significa quando algo é mais escura vs. mais leve, mas que quer dizer que, por exemplo, o verde é um valor superior a laranja?