Сопоставление списка числовых значений с цветами

StackOverflow https://stackoverflow.com/questions/497635

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

На каком бы алгоритме вы в конце концов ни остановились, вы могли бы попробовать CIELAB ( СИЛАБ ) цветовое пространство.Это нормализует различия в восприятии цвета человеком, так что равный числовой интервал дает равные различия в восприятии.

Видишь: Как автоматически сгенерировать N "отличных" цветов?

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top