Где я могу найти большую палитру/набор контрастных цветов для раскрашивания множества наборов данных на графике?

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

Сюжет генерируется программно и предназначен для включения в презентацию, которая будет отображаться с помощью проектора.

Есть ли готовые наборы цветов для такой задачи (мне нужны цвета как набор значений RGB)?

Или, может быть, есть какой-то алгоритм, который программно генерирует такой набор цветов (я использую Wolfram Mathematica для построения графиков)?

PS Сам сюжет может выглядеть, например, примерно так:

Скриншот

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

Ответы (7)

Благодаря отличной работе

П. Грин-Армитейдж (2010): Цветовой алфавит и пределы цветового кодирования. // Цвет: Дизайн и творчество (5) (2010): 10, 1-23

(и пользователю ohadsc , который на это сослался !) теперь я знаю как минимум 3 готовых набора цветов максимальной контрастности, содержащих не менее 20 цветов (но у меня все еще есть явные значения RBG только для одного из них):

1) Набор из 22 цветов максимальной контрастности, предложенный Кеннетом Келли в работе:

К. Келли (1965): Двадцать два цвета максимальной контрастности. // Цветная техника, 3(6)

Конкретика (со ссылкой на П. Грин-Армитэджа): «Порядок цветов в списке Келли был спланирован таким образом, чтобы был максимальный контраст между цветами в наборе, если необходимое количество цветов всегда выбиралось по порядку сверху. <.. .> Келли позаботился о потребностях людей с нарушенным цветовым зрением. Первые девять цветов будут максимально отличаться для таких людей, как и для людей с нормальным зрением. Эти девять цветов также легко различимы по названию цвета."

Дополнительная информация (со ссылкой на П. Грин-Армитэджа): «ISCC создал проектный комитет 54 с намерением актуализировать работу Келли. Однако комитет решил, что для того, что они пытались сделать, они не могли улучшить Набор цветов Келли».

2) Набор из 25 цветов, предложенный Робертом и Эллен Картер в работе:

Роберт С. Картер, Эллен С. Картер (1982): Высококонтрастные наборы цветов. // Прил. Оптика, 21 (1982) 2936-2939.

Подробности (со ссылкой на П. Грин-Армитэджа): «Картер и Картер ссылаются на работу Келли и подтверждают его предположение о том, что легкость, с которой можно различить два цвета, зависит от того, насколько далеко друг от друга находятся цвета в цветовом пространстве. Из доступных цветовых пространств. в то время они выбрали CIE Lu v * как наиболее подходящую для своего исследования. <...> Они обнаружили, что способность людей правильно определять цвета быстро снижается, когда расстояние между цветами составляет менее 40 единиц CIE Lu v *». В своей работе они представляют набор из 25 цветов, разделенных не менее чем 51,6 единицами CIE L u v*.

3) Набор из 26 цветов для проекта «Алфавит цветов», предложенный Полом Грин-Армитэджем в цитируемой выше работе «Алфавит цветов и пределы цветового кодирования». Этот набор цветов предназначен для использования с белым фоном. Триплеты RGB этого набора: {240,163,255},{0,117,220},{153,63,0},{76,0,92},{25,25,25},{0,92,49},{43,206,72},{255,204,153},{128,128,128},{148,255,181},{143,124,0},{157,204,0},{194,0,136},{0,51,128},{255,164,5},{255,168,187},{66,102,0},{255,0,16},{94,241,242},{0,153,143},{224,255,102},{116,10,255},{153,0,0},{255,255,128},{255,255,0},{255,80,5}.

ОБНОВЛЕНИЕ 1

4) Есть еще одна отличная статья на эту тему:

Зейлейс, Хорник и Мюррелл (2009): Выход из RGBland: выбор цветов для статистической графики // Вычислительная статистика и анализ данных, том 53, выпуск 9, 1 июля 2009 г., страницы 3259-3270

Эта статья содержит хороший набор из 26 различных цветов на странице 11:

Набор цветов Zeileis, Hornik и Murrell 2009 г.

Триплеты RGB этого набора: {2,63,165},{125,135,185},{190,193,212},{214,188,192},{187,119,132},{142,6,59},{74,111,227},{133,149,225},{181,187,227},{230,175,185},{224,123,145},{211,63,106},{17,198,56},{141,213,147},{198,222,199},{234,211,198},{240,185,141},{239,151,8},{15,207,192},{156,222,214},{213,234,231},{243,225,235},{246,196,225},{247,156,212}.

ОБНОВЛЕНИЕ 2

Пользователь Татариз предлагает в своем блоге :

5) Набор из 64 максимально непохожих цветов :

Набор Татаризе из 64 максимально непохожих цветов.

6) Цветовой словарь из 269 максимально отличных цветов от всех предыдущих цветов ( эту функцию я использовал для получения триплетов RGB из шестнадцатеричных кодов):

Цветной алфавит Татаризе

Вот шестнадцатеричные коды из связанного сообщения в блоге (полный список 269 шестнадцатеричных кодов цветового алфавита Татаризе, скрытых в истории изменений для удобства чтения).

7) 256 различных цветов .

ОБНОВЛЕНИЕ 3

Потенциально полезные веб-приложения:

ОБНОВЛЕНИЕ 4

8) Список 20 простых, отчетливых цветов Саши Трубецкой:

изображение

«Я составил простой в использовании список цветов, оптимизированный для всех носителей; конечно, не без небольших компромиссов, таких как неточное преобразование CMYK. Основная проблема заключается в выборе «чистых» (например, 100% пурпурного) или веб-безопасных цветов. приводит к безвкусным, отвлекающим и несбалансированным цветовым палитрам. Это моя попытка создать красивую палитру, которая хорошо работает для сетевых или транспортных диаграмм или для категориальных данных».

Это очень полезно, Алексей. Спасибо! Мне интересно, нашли ли вы что-нибудь для 1. непрерывных цветовых шкал (градиентов) 2. цветовых шкал или наборов цветов, которые сохраняют контраст даже после преобразования оттенков серого (например, требование в журналах APS). graphicdesign.stackexchange.com/questions/7960/…
Если кому нужно, вот шестнадцатеричные коды цветов в том же порядке, что и на картинке **** private string[,] graphColors = {{"#023FA5","#7D87B9","#BEC1D4" ,"#D6BCC0","#BB7784","#FFFFFF"}, {"#4A6FE3","#8595E1","#B5BBE3","#E6AFB9","#E07B91","#D33F6A"}, { "#11C638","#8DD593","#C6DEC7","#EAD3C6","#F0B98D","#EF9708"}, {"#0FCFC0","#9CDED6","#D5EAE7","#F3E1EB ","#F6C4E1","#F79CD4"}, };
У кого-нибудь есть шестнадцатеричный код для цветов в обновлении №1?
@redshift Это: "#023fa5", "#7d87b9", "#bec1d4", "#d6bcc0", "#bb7784", "#8e063b", "#4a6fe3", "#8595e1", "#b5bbe3", "#e6afb9", "#e07b91", "#d33f6a", "#11c638", "#8dd593", "#c6dec7", "#ead3c6", "#f0b98d", "#ef9708", "#0fcfc0", "#9cded6", "#d5eae7", "#f3e1eb", "#f6c4e1", "#f79cd4".
чтобы создать из них шестнадцатеричные строки, разделенные запятыми, используйте этот python oneliner: print("'" + "', '". ...: join('#'+''.join(f'{int(c):02x}' for c in col.split(',')) for col in colors.strip('{}').split('},{')) + "'").
Имейте в виду, что метод, используемый для более чем 200 цветовых палитр, не является оптимальным для этого приложения, поскольку он был выполнен в цветовом пространстве RGB. Цветовое пространство RGB предназначено для компьютеров, чтобы интерпретировать и отображать цвета, оно не основано на восприятии. В результате получается большое количество ненасыщенных цветов, которые человеческий глаз плохо различает. Более идеальным методом было бы разместить их в цветовом пространстве Lab (как это было сделано для исходной 64-цветной палитры).
@MiguelBartelsman Ты уверен? Вот описание комплектов №6 и №7 . В обоих случаях использовалось цветовое расстояние LABd2000 (по набору цветов RGB). Поскольку намерение состоит в том, чтобы использовать эти цвета на компьютере или проекторе, я думаю, что это почти лучший выбор на данный момент.
Извините за это, кажется, я совершенно неправильно прочитал. Я также пошел дальше и сам провел анализ палитры ( i.imgur.com/KHx0MuA.png & i.imgur.com/HZcNJZB.png ). Честно говоря, это почти так же хорошо, как и для 256 цветов, и только 2 или 3 пары трудно различить рядом друг с другом.
Вот также краткая справочная статья Википедии о различимых цветах: en.wikipedia.org/wiki/Help:Distinguishable_colors .

Комбинация «яркий», «легко различимый» и «20 и более» хитрая. Напоминает «Наша работа быстрая, дешевая и качественная. Выберите любые два». Я думаю, вы могли бы выбросить слово «яркий» из смеси и просто сказать «контрастное». Это упрощает выполнение брифа и, я думаю, поможет вам достичь того, чего вы хотите.

Я не знаю такого набора навскидку, но вот как бы я это сделал с помощью Photoshop:

  • Создайте пустой документ в цветовом режиме (RGB или CMYK), который вы хотите использовать. RGB подходит для всех настольных принтеров, а также для просмотра на экране или в проекции. Используйте CMYK, только если вам нужны фактические значения CMYK.

  • Выберите 5 основных цветов, равномерно распределенных по цветовому кругу. В настройке Hue это означает 0, 60, 120, 180, 240 и 300. Это будут ваши отправные точки. (В качестве альтернативы можно заменить образцы по умолчанию набором для Windows или Mac, доступным во всплывающем меню панели «Образцы», и использовать от 7-го до 2-го последнего.)

  • Для каждого оттенка выберите 5 или 6 уровней яркости и насыщенности, чтобы получить легко различимые окончательные цвета.

  • Когда вы найдете каждый из них, добавьте его в свои образцы.

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

  • Удалите все остальные образцы (Alt/Opt-щелкните, чтобы удалить), чтобы остались только те, которые вам нужны.

  • Сохраните образцы, используя «Сохранить образцы для обмена…» во всплывающем меню «Образцы». При этом сохраняется файл .ASE, который можно загрузить в Illustrator, InDesign или любое другое приложение Adobe.

Надеюсь, это поможет.

[Дополнение после расширенного вопроса]

Базовые цвета в шестнадцатеричном формате: 0xff0000 (чисто красный), 0xffff00 (желтый), 0x00ff00 (зеленый), 0x00ffff (голубой), 0x0000ff (синий) и 0xff00ff (пурпурный). Поэкспериментировав, я обнаружил, что чистый желтый слишком близок к белому, чтобы быть полностью полезным для ваших целей, а для синего требуется другая отправная точка, потому что он визуально темный. Из каждого базового цвета можно получить 4 оттенка. Поскольку вы также можете использовать серые цвета, это позволяет использовать матрицу 7x4, что я считаю вполне пригодными для использования цветами, учитывая ваши ограничения (и предполагаемое отсутствие доступа к Photoshop или аналогичному приложению). Возьмите калькулятор и выведите десятичные значения, если они вам нужны! :-)

  • Для всего, кроме желтого, синего и серого, исходными точками являются чистые цвета. Уменьшите шестнадцатеричные значения с ff до b0, 87 и 55 для ваших четырех оттенков.

  • Для синего «яркий» — это b0b0ff, а оттенки — 8484ff, 4949ff и 0000ff.

  • Для желтого: будут работать e4e400, baba00, 878700 и 545400, а для значений серого сделайте младшие байты такими же, как старшие и средние в каждом случае.

Моя быстрая и грязная диаграмма этих (за вычетом серых) выглядит так:

цветовая сетка

Я исправил свой вопрос: цвета должны быть контрастными (и по возможности яркими). График генерируется программно, и мне нужны цвета как набор значений RGB. Спасибо.
Смотрите развернутый ответ. Я думаю, что это приведет вас туда, где вы должны быть.
Вы также можете немного перемещать цвета по цветовому кругу с шагом в насыщенности, чтобы получить немного больше контраста между различными уровнями насыщенности цвета.
@Alan Ваше решение изначально основано на равноотстоящей сетке значений RGB, определенной в цветовой гамме RGB. Как я недавно узнал, цветовое пространство RGB неоднородно для восприятия, поэтому такой подход неизбежно приводит к набору цветов, которые будут содержать слишком близкие цвета. Например, на вашей диаграмме два нижних синих цвета очень похожи, и их очень трудно различить на моем мониторе, даже если я знаю, что они должны быть разными. Кажется, что цветовая система Манселла намного лучше подходит для этой цели : она неформальна для восприятия.
Перечитайте пункт 2 моего ответа. Вы просили значения RGB, а не Манселла; у тебя RGB. Они будут работать для ваших целей, нет необходимости использовать их все, и я дал вам подробную информацию о том, что у вас есть возможность изменить их. Участники сайта здесь не для того, чтобы делать вашу работу за вас (см. FAQ).
@Alan Я только что поделился своим недавним открытием и имел в виду, что, по-видимому, цветовая система Munsell лучше подходит для подбора цветов, и, конечно же, эти цвета можно преобразовать в RGB (для этого есть бесплатная утилита ). Спасибо за ваши усилия.
Here's Alan's list of colors: #ff0000 #b00000 #870000 #550000 #e4e400 #baba00 #878700 #545400 #00ff00 #00b000 #008700 #005500 #0000ff #0000b0 #000087 #000055 #b0b0ff #8484ff #4949ff #0000ff #ff00ff #b000b0 #870087 #550055 #ffffff #b0b0b0 #878787 #555555
Исправление значений в комментарии @neu242 (где голубой и синий «сливаются» и содержат белый). Я думаю, что цвета Алана: #ff0000 #b00000 #870000 #550000 #e4e400 #baba00 #878700 #545400 #00ff00 #00b000 #008700 #005500 #00ffff #00b0b0 #008787 #005555 #b0b0ff #8484ff #4949ff #0000ff #ff00ff #b000b0 #870087 #550055 #e4e4e4 #bababa #878787 #545454но я бы не обязательно использовал их в таком порядке...
... здесь они снова как тройки RGB, но "транспонированные": {255,0,0}, {228,228,0}, {0,255,0}, {0,255,255}, {176,176,255}, {255,0,255}, {228,228,228}, {176,0,0}, {186,186,0}, {0,176,0}, {0,176,176}, {132,132,255}, {176,0,176}, {186,186,186}, {135,0,0}, {135,135,0}, {0,135,0}, {0,135,135}, {73,73,255}, {135,0,135}, {135,135,135}, {85,0,0}, {84,84,0}, {0,85,0}, {0,85,85}, {0,0,255}, {85,0,85}, {84,84,84}.

Хороший подход — цветовая схема Solarized от Ethan Schoonover.

Из описания:

«Solarized — это палитра из шестнадцати цветов (восемь монотонов, восемь акцентных цветов), предназначенная для использования с терминалами и приложениями с графическим интерфейсом».

Я думаю, что это не только красивая цветовая схема, но и расширяемая, и за ней стоит хорошая теория.

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

Я бы подумал о переосмыслении общего визуального образа, если вы можете. Возможно, сегментировать его на 4 визуала по 5 цветов в каждом, смешивать и сочетать наложения и т. д.

Tufte — это ресурс, на котором можно узнать больше о построении данных таким образом, чтобы лучше всего передать цель:

http://www.edwardtufte.com/tufte/

Вы можете попробовать эту палитру цветов. Он был разработан для карт, но мы также используем его для диаграмм и графиков. Удачи!

http://colorbrewer2.org/

Но максимум 12 цветов. Извините. :)

Я столкнулся с той же проблемой, пытаясь отобразить данные, соответствующие 24 различным человеческим хромосомам (1-22, X и Y). Мое решение закончилось разработкой моего собственного пакета R:

https://cran.r-project.org/web/packages/Polychrome/index.html

https://www.jstatsoft.org/article/view/v090c01

Сюда входят инструменты для создания собственных палитр и проверки «различимости» цветов в палитре. Одна из виньеток упаковки включает эвристический аргумент, предполагающий, что максимально возможное количество различимых цветов, вероятно, меньше 40. Что ж.)

Очень хорошая бумага (и цветовые схемы в ней). Как вы думаете, можно ли использовать ваши инструменты для анализа градиентов перехода от черного к цвету вместо отдельных цветов? Смотрите мой вопрос здесь . Кстати, я пытался связаться с вами по электронной почте, но это письмо было отклонено как «аккаунт не существует».

Вот набор, который я разработал, из 26 максимально различных значений RGB (28, если вы включаете черный и белый). Это также цветной алфавит. Он отличается от цветового алфавита Питера Грина-Армитэджа и 22 цветов Кеннета Келли тем, что он оптимизирован для компьютерных дисплеев, а не для печатных материалов. И отличается от 20 цветов Саши Трубецкого тем, что не пытается быть со вкусом. :-) Но эти три примера оказались очень полезными.

Цветовой алфавит RGB

 #00B7FF, #004DFF, #00FFFF, #826400, #580041, #FF00FF, #00FF00, #C500FF, #B4FFD7,  
 #FFCA00, #969600, #B4A2FF, #C20078, #0000C1, #FF8B00, #FFC8FF, #666666, #FF0000,  
 #CCCCCC, #009E8F, #D7A870, #8200FF, #960000, #BBFF00, #FFFF00, #006F00
Что заставило вас расположить квадраты именно в таком порядке?
Это было лучшее, что я мог сделать, чтобы разместить похожие цвета рядом друг с другом, сведя 3D в 2D. Он как бы переходит от более светлого цвета в середине к более темному снаружи. И у него есть приблизительные линии постоянного оттенка, расходящиеся от центра. Также остались места для 5 дополнительных серых цветов (и черного), которые вы можете увидеть здесь: dkeenan.com/Colour