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.

Foi útil?

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?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top