Создать набор цветов
От: tnikolai  
Дата: 13.02.13 19:17
Оценка: 102 (1)
Есть несколько эл на странице, их может быть разное количество, но не более 50.

Их надо разукрасить в разный цвет.
Вот тут проблемма, как подобрать набор цветов, чтоб они хорошо отличались друг от друга.
Re: Создать набор цветов
От: Senyai Россия http://www.arseniy.net
Дата: 13.02.13 21:13
Оценка:
Здравствуйте, tnikolai, Вы писали:

T>Есть несколько эл на странице, их может быть разное количество, но не более 50.


T>Их надо разукрасить в разный цвет.

T>Вот тут проблемма, как подобрать набор цветов, чтоб они хорошо отличались друг от друга.

http://en.wikipedia.org/wiki/Hue -> brains -> http://jsfiddle.net/WmZq7/1/
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
Re[2]: Создать набор цветов
От: rFLY  
Дата: 14.02.13 10:49
Оценка: 2 (1)
Здравствуйте, Senyai, Вы писали:

T>>Вот тут проблемма, как подобрать набор цветов, чтоб они хорошо отличались друг от друга.


S>http://en.wikipedia.org/wiki/Hue -> brains -> http://jsfiddle.net/WmZq7/1/

Два соседних дива практически не отличаются (особенно на зеленом диапазоне). Но мне кажется то, что просит ТС, не реально
А за пример спасибо
Re[2]: Создать набор цветов
От: rFLY  
Дата: 14.02.13 11:20
Оценка:
Здравствуйте, Senyai, Вы писали:

Вдогонку к предыдущему сообщению. Можно добавить градацию от черного к белому. Это должно помочь (дать хотя бы штук 5 цветов которых нет на полоске)
Re[3]: Создать набор цветов
От: tnikolai  
Дата: 14.02.13 16:20
Оценка:
Здравствуйте, rFLY, Вы писали:

FLY>Здравствуйте, Senyai, Вы писали:


T>>>Вот тут проблемма, как подобрать набор цветов, чтоб они хорошо отличались друг от друга.


S>>http://en.wikipedia.org/wiki/Hue -> brains -> http://jsfiddle.net/WmZq7/1/

FLY>Два соседних дива практически не отличаются (особенно на зеленом диапазоне). Но мне кажется то, что просит ТС, не реально
FLY>А за пример спасибо

Так и делали, 20 цветов ещё более-менее разные получаются, но 30-40 , особенно зелёные уже почти одиннаковые.
Оказывается цветов не так и много.

Может есть какой-нибудь сбособ усилить различие цветов?
Re: Создать набор цветов
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 14.02.13 16:32
Оценка:
Здравствуйте, tnikolai, Вы писали:

T>Есть несколько эл на странице, их может быть разное количество, но не более 50.


T>Их надо разукрасить в разный цвет.

T>Вот тут проблемма, как подобрать набор цветов, чтоб они хорошо отличались друг от друга.

Я в таких случаях беру квазислучайное распределение в линейном цветовом пространстве.
Более сложная задача: как подобрать красивый набор контрастных цветов.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Создать набор цветов
От: . Великобритания  
Дата: 16.02.13 22:28
Оценка:
Здравствуйте, tnikolai, Вы писали:

t> Может есть какой-нибудь сбособ усилить различие цветов?

Иногда возможно текстуры использовать.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[5]: Создать набор цветов
От: NikoNiko Россия http://nikocentral.com
Дата: 20.02.13 17:53
Оценка:
t>> Может есть какой-нибудь сбособ усилить различие цветов?
.>Иногда возможно текстуры использовать.

я выбирал тут http://pro-koterie.ru/cvet-fona-sajta.html
и тут http://www.stm.dp.ua/web-design/color-html.php
--
Центральный блог Niko
http://nikocentral.com
Re[2]: Создать набор цветов
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.03.13 05:17
Оценка:
Здравствуйте, Senyai, Вы писали:

S>http://en.wikipedia.org/wiki/Hue -> brains -> http://jsfiddle.net/WmZq7/1/

Отличная попытка.
Нюансы:
1. Только оттенка — недостаточно. Яркостная составляющая также крайне важна для распознавания цветов.
http://jsfiddle.net/WmZq7/9/ — для 20 цветов работает вполне нормально (для 50 всё-таки плоховато)
2. Если важна разница между соседями — то поворот hue на золотое сечение работает более-менее приемлемо: http://jsfiddle.net/WmZq7/10/
3. А вообще — прекрасная задача! Удивляюсь, что сходу не нашёл её обсуждения в сети.
Вот у нас есть некий color space. Есть некое N. Как нам максимизировать минимальное попарное расстояние между N точками в этом color space?
В принципе, решение должно быть общим — хоть для RGB, хоть для HSV. Если оно есть, то лучше всего в него скормить что-то типа СIEDE2000 в качестве метрики расстояния.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Создать набор цветов
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 05.03.13 09:22
Оценка: 68 (1)
Здравствуйте, Sinclair, Вы писали:

S>Вот у нас есть некий color space. Есть некое N. Как нам максимизировать минимальное попарное расстояние между N точками в этом color space?


Квазислучайная последовательность не совсем максимизирует минимальное попарное расстояние, но близко к тому. Результат можно улучшить несколькими итерациями алгоритма Ллойда.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: Создать набор цветов
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.03.13 08:38
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>Квазислучайная последовательность не совсем максимизирует минимальное попарное расстояние, но близко к тому. Результат можно улучшить несколькими итерациями алгоритма Ллойда.

Не понял, как алгоритм Ллойда поможет. Он же кластеризует N точек в M кластеров. Если N = M, то он выходит после первого шага, оставив точки на местах.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Создать набор цветов
От: Dimonka Верблюд  
Дата: 06.03.13 14:09
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Отличная попытка.

S>Нюансы:
S>1. Только оттенка — недостаточно. Яркостная составляющая также крайне важна для распознавания цветов.
S> http://jsfiddle.net/WmZq7/9/ — для 20 цветов работает вполне нормально (для 50 всё-таки плоховато)

Ты делаешь шаги по хью с поворотом в небольшой градус. Можно к углу прибавить 180 градусов и результат будет ещё более контрастный.

Конечно мой вариант не супер, я в жаваскрипте не в зуб ногой,
но зато гораздо контрастнее:
   for(var i=0;i<NUM;i++) {
        var color = hsv2rgb((i / 2 + (i % 2) / 2 * NUM) / NUM, 0.8, v);
        if(i % 2 == 1) {
          v = 1-v;
        }
Re[4]: Создать набор цветов
От: Sinclair Россия https://github.com/evilguest/
Дата: 06.03.13 17:03
Оценка:
Здравствуйте, Dimonka, Вы писали:
D>Ты делаешь шаги по хью с поворотом в небольшой градус. Можно к углу прибавить 180 градусов и результат будет ещё более контрастный.
Это ничего не даст — только переупорядочит ту же самую палитру.
Я к поворту хью добавил колебания сатурации, чтобы раскидать близкие точки чуть подальше.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Создать набор цветов
От: Dimonka Верблюд  
Дата: 07.03.13 12:19
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Dimonka, Вы писали:

D>>Ты делаешь шаги по хью с поворотом в небольшой градус. Можно к углу прибавить 180 градусов и результат будет ещё более контрастный.
S>Это ничего не даст — только переупорядочит ту же самую палитру.
S>Я к поворту хью добавил колебания сатурации, чтобы раскидать близкие точки чуть подальше.
Это я понял. Просто я думал, речь идёт о палитре, готовой сразу к использованию. Т.е. чтобы соседние цвета были контрастными.

Ну и в целом, если палитра из 10-20 цветов готова, то можно добавить несколько градаций яркости и вот уже и набор из как минимум 50 цветов. если конечно под цветом имеется ввиду сочетание RGB, а не только HS.
Re[6]: Создать набор цветов
От: Dimonka Верблюд  
Дата: 07.03.13 14:12
Оценка:
Здравствуйте, Dimonka, Вы писали:

S>>Здравствуйте, Dimonka, Вы писали:

D>>>Ты делаешь шаги по хью с поворотом в небольшой градус. Можно к углу прибавить 180 градусов и результат будет ещё более контрастный.
S>>Это ничего не даст — только переупорядочит ту же самую палитру.
S>>Я к поворту хью добавил колебания сатурации, чтобы раскидать близкие точки чуть подальше.

Вот ещё нашёл, правда метод не гарантирует 100% разные цвета:

http://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/
В принципе неплохой алгоритм, можно даже при генерации следующего цвета отсеивать слижком уж близкие по HSL цвета.
Про отсеивание как раз здесь есть немного:
http://stackoverflow.com/questions/2328339/how-to-generate-n-different-colors-for-any-natural-number-n

А тут ответ как гарантировать разницу в цвете:
http://stackoverflow.com/questions/309149/generate-distinctly-different-rgb-colors-in-graphs
Re[6]: Создать набор цветов
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.03.13 11:59
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Ну и в целом, если палитра из 10-20 цветов готова, то можно добавить несколько градаций яркости и вот уже и набор из как минимум 50 цветов. если конечно под цветом имеется ввиду сочетание RGB, а не только HS.

Вопрос сложнее, чем кажется. "Набор"-то можно сделать хоть из 16 миллионов цветов — вопрос в различаемости. Низконасыщенные тёмные цвета разных оттенков почти неразличимы, также как и светлые.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Создать набор цветов
От: Dimonka Верблюд  
Дата: 12.03.13 08:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

D>>Ну и в целом, если палитра из 10-20 цветов готова, то можно добавить несколько градаций яркости и вот уже и набор из как минимум 50 цветов. если конечно под цветом имеется ввиду сочетание RGB, а не только HS.

S>Вопрос сложнее, чем кажется. "Набор"-то можно сделать хоть из 16 миллионов цветов — вопрос в различаемости. Низконасыщенные тёмные цвета разных оттенков почти неразличимы, также как и светлые.

Это наталкивает на мысль, что при повышении / понижении яркости, надо повышать порог насыщенности, ниже которого не генерировать цвета.
Re[8]: Создать набор цветов
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.03.13 18:35
Оценка:
Здравствуйте, Dimonka, Вы писали:

D>Это наталкивает на мысль, что при повышении / понижении яркости, надо повышать порог насыщенности, ниже которого не генерировать цвета.

Лично меня это наталкивает на мысль поискать решения в области плотной упаковки.
Скажем, можно ввести силы отталкивания между точками в цветовом пространстве, обратно пропорциональные квадрату метрики разницы по CIELAB, и бросив горсть точек случайным образом, предоставить им разбежаться "куда смогут" под действием этих сил до достижения равновесия.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.