Как я могу создать в целом эстетически приятный диапазон цветов линейного графика (неизвестно в числе), начиная с основного цвета? - PullRequest
1 голос
/ 19 ноября 2011

Мне нравится алгоритм генерации случайных цветов , предложенный здесь Дэвидом Кроу , но мне интересно, есть ли способ сфокусировать его результаты на одном цвете и регулировать результаты.

Моя программабудет генерировать графики, которые отслеживают ряд переменных.Каждая переменная относится к одной из 7 категорий.Я хотел бы создать цвета линий для этих переменных, которые будут разборчивыми, уникальными и для которых оттенок, насыщенность и яркость находятся в пределах приблизительного диапазона корневого цвета, который связан с их категорией.Например, переменные категории Red могут быть различными разборчивыми и различимыми вариациями красного.

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

01 > |---------------|---------------|
02 > |-------|-------|---------------|
03 > |-------|-------|-------|-------|
04 > |---|---|-------|-------|-------|
05 > |---|---|---|---|-------|-------|
06 > |---|---|---|---|---|---|-------|
07 > |---|---|---|---|---|---|---|---|
08 > |-|-|---|---|---|---|---|---|---|
09 > |-|-|-|-|---|---|---|---|---|---|
10 > |-|-|-|-|-|-|---|---|---|---|---|
11 > |-|-|-|-|-|-|-|-|---|---|---|---|
12 > |-|-|-|-|-|-|-|-|-|-|---|---|---|
13 > |-|-|-|-|-|-|-|-|-|-|-|-|---|---|
14 > |-|-|-|-|-|-|-|-|-|-|-|-|-|-|---|
15 > |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|

Какой лучший способ сделать это?Или это даже лучшее решение моей проблемы?На одном графике может быть не более 4 или 5 переменных, но число переменных, которые можно отобразить, может исчисляться сотнями.

Спасибо за вашу помощь.

1 Ответ

3 голосов
/ 19 ноября 2011

Вы можете рассматривать это как проблему упаковки сфер в 3D: вы хотите, чтобы ваши цвета находились на одинаковом расстоянии друг от друга. Лучшее решение для этого зависит от количества вариантов цветов, которые вам нужны, и найти оптимальное решение не так просто. Тем не менее, простой механизм может состоять в том, чтобы сохранить последовательность гранецентрированных кубических координат, начиная с (0,0,0) и упорядоченных по расстоянию от этого источника, и использовать их в последовательности как смещения к вашему «базовому» цвету ( масштабируется параметром, который устанавливает как отличается друг от друга, они должны выглядеть).

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

...