Сопоставление списка числовых значений с цветами
-
20-08-2019 - |
Вопрос
У меня есть список числовых значений.Я могу нормализовать значения, если это необходимо.
Мне нужно преобразовать этот список в список цветов (в HSL, RGB или любой другой цветовой модели — я всегда могу выполнить преобразование позже).
Для любого заданного значения цвет должен быть каждый раз одним и тем же.
Чем больше отличаются два заданных числовых значения, тем более контрастными должны быть соответствующие значения.
Все используемые цвета должны быть как можно более контрастными друг с другом (это мягкое ограничение, подойдет грубое решение).
Обратите внимание, что список довольно большой (тысячи чисел), поэтому простое втискивание всех чисел в один цветовой канал привело бы к слишком плотным результатам.
Решение
Вы могли бы рассмотреть возможность использования 3D кривая заполнения пространства через выбранное вами цветовое пространство.Я поддержу предложение Марка CIELAB ( СИЛАБ ) предложение, жаль, что я не знал об этом в прошлый раз, когда мне пришлось решать подобную проблему.
Другие советы
На каком бы алгоритме вы в конце концов ни остановились, вы могли бы попробовать CIELAB ( СИЛАБ ) цветовое пространство.Это нормализует различия в восприятии цвета человеком, так что равный числовой интервал дает равные различия в восприятии.
Видишь: Как автоматически сгенерировать N "отличных" цветов?
Было бы лучше нормализовать ваши значения и запустить их с помощью предложенного мной кода (где hue == ваше значение), создав карту / хэш.(Вместо этого вы можете использовать функцию в стиле хэша, которая, вероятно, более эффективна.)
Вы можете "рандомизировать" легкость (или яркость, в зависимости от вашей модели) и насыщенность, используя некоторые заранее определенные биты вашего числа, например.
Почему бы не использовать оттенки серого?Просто вычислите минимальные / максимальные значения и используйте это для перевода каждого числа в другой оттенок - от белого к черному.
Я знаю, что дело не в цветах, но, на мой взгляд, так будет легче интерпретировать результаты.Я могу сказать, что это значит, когда что-то темнее по сравнению ссветлее, но кто может сказать, что, например, зеленый цвет имеет более высокую ценность, чем оранжевый?