Отображение списка числовых значений в цвета - PullRequest
5 голосов
/ 31 января 2009

У меня есть список числовых значений. Я могу нормализовать значения при необходимости.

Мне нужно преобразовать этот список в список цветов (в HSL, RGB или любой другой цветовой модели - я всегда могу выполнить преобразование позже).

Для любого данного значения цвет должен быть одинаковым каждый раз.

Чем больше отличаются два заданных числовых значения, тем более контрастными должны быть соответствующие значения.

Все используемые цвета должны максимально контрастировать друг с другом (это мягкое ограничение, грубое решение подойдет).

Обратите внимание, что список довольно большой (тысячи чисел), поэтому простое сжатие всех чисел в один цветной канал даст слишком плотные результаты.

Ответы [ 4 ]

2 голосов
/ 31 января 2009

Вы можете рассмотреть возможность использования 3D кривой заполнения пространства через выбранное цветовое пространство. Я поддержу предложение Марка CIELAB , если бы я знал об этом в последний раз, когда мне пришлось решать аналогичную проблему.

2 голосов
/ 31 января 2009

Какой бы алгоритм вы ни выбрали, вы можете попробовать цветовое пространство CIELAB . Он нормализует различия в восприятии цвета человеком, так что равные числовые интервалы дают равные различия в восприятии.

1 голос
/ 31 января 2009

См .: Как автоматически генерировать N "различных" цветов?

Было бы лучше нормализовать ваши значения и выполнить их с помощью кода, который я предложил (где hue == ваше значение), для построения карты / хэша. (Вместо этого вы можете использовать функцию в стиле хеша, которая, вероятно, более эффективна.)

Вы можете «рандомизировать» яркость (или яркость, в зависимости от вашей модели) и насыщенность, используя, например, некоторые заранее определенные биты вашего числа.

0 голосов
/ 31 января 2009

Почему бы не использовать оттенки серого? Просто рассчитайте минимальные / максимальные значения и используйте их для перевода каждого числа в разные оттенки от белого до черного.

Я знаю, что это не цвета, но, по моему мнению, будет проще интерпретировать результаты. Я могу сказать, что это означает, когда что-то темнее или светлее, но кто скажет, что, например, зеленый цвет выше, чем оранжевый?

...