Графика - выбор цветов для представления пространства переменных - больше дизайна, чем программирования - PullRequest
1 голос
/ 02 марта 2012

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

Я построил инструмент, по большей части;Теперь у меня есть несколько странная проблема ...

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

Не вдаваясь в подробности проекта: у меня есть две основные переменные, A и B. A имеет 4 значения, а B имеет 5.

Я хочу использовать Green, когда A = 4, Желтый для A = 3, оранжевый для A = 2 и красный для A = 1.В пространстве B-переменных я подумал, что буду использовать насыщенность - 100% @ 5, 80% @ 4, 60% @ 3, 40% @ 2 и 20% @ 1

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

Только они этого не делают.Цвета не передают эту информацию пользователю.Трудно визуально отличить 100% цветов от 80% - я думаю, это связано с тем, что наш цветовой отклик не является линейным.

Интересно, есть ли у кого-нибудь мысли о том, как я могу разделить мои два переменных плана прилично воспринимаемым образом, используя цвет?

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

1 Ответ

1 голос
/ 02 марта 2012

Цветовое пространство RGB больше связано со светом, который мониторы и другие устройства используют для создания цвета, а не с вашим восприятием отдельных каналов. Существует множество цветовых пространств, каждое со своими характеристиками.

Например, цветовое пространство LMS моделируется после фактических спектральных кривых распределения мощности, которые описывают, как преобразователи человеческого глаза реагируют на свет:

http://en.wikipedia.org/wiki/LMS_color_space

... Кривые которых можно аппроксимировать сложными 8-битными значениями RGB, но прямо.

Для вас я бы порекомендовал либо цветовое пространство L a b *, которое во многих отношениях является наиболее оптимальным компромиссом, на пересечении того, что мы (как и мы, люди) можем концептуально понять, что мы можем математически моделировать, и как мы видим.

Если вы находите это сложным, значения HSV - ваш друг. HSV технически не отличается от RGB с точки зрения гаммы цветовым пространством - это своего рода искаженное представление пространства RGB с числовыми представлениями, более подходящими для вашей задачи:

the HSV color space

'H' в HSV - это количество градусов вокруг круга оттенка (от 0 до 360 - вы можете увидеть его в радианах, также выраженное в диапазоне [0..2π]); S и V - насыщенность (сколько цветности) и значение (модулированное значение яркости) соответственно. HSV является своего рода транспозицией HSL, в которой L является более буквальной мерой яркости.

Смысл всего этого: это связано. Если вы изменяете значение H, перемещая оттенок по кругу, удерживая S и V постоянными, это изменение будет гораздо более ощутимым для пользователя, чем (скажем), если вы измените значение 0xEFEEEE на 0xEFEFEF и поместите значение на пиксель ЖК-дисплея. И вот, что хорошо при работе со значениями HSV или HSL: вы можете без потерь преобразовать их обратно в RGB, когда вам нужно их отобразить.

Математическая схема преобразования между RGB и L a b * гораздо менее прямолинейна - это абстрактное цветовое пространство, оси и размеры которого не привязаны к конкретным качествам человеческого зрения - но играют вокруг с любым цветовым пространством математика стоит, по меньшей мере, 1000 слов, так сказать.

Удачи, звучит как хороший проект.

...