Качественная цветовая палитра - фотокопия безопасна (в градациях серого)

12

Я ищу качественную цветовую палитру 5 класса, которая может быть напечатана на черно-белых принтерах.

На рисунке ниже показана цветная карта (вверху: качественная, снизу: расходящаяся) и вид каждой из них в оттенках серого (справа). Обе цветовые палитры ( Set3и Spectral) принадлежат ColorBrewer .

  1. [UL] Качественный Set3
  2. [UR] Качественный Set3 в оттенках серого
  3. [LL] Дивергенция Spectral
  4. [LR] расходится Spectralв оттенках серого

введите описание изображения здесь

Я особенно страдаю, чтобы различить группы в верхнем правом изображении, в то время как нижнее (спектральное) намного лучше, если не идеальное (я не могу сказать, какой был синий или красный). И в соответствии с ColorBrewer, цветовая схема Spectral (та, которую я использовал здесь) является единственной photocopy safeдля 5-классовой палитры.

Сокращение классов (до 3 или 4) может быть вариантом, но я боюсь, что это не было целью этой карты.

Вероятно, это не связано с программным обеспечением ГИС, но я в основном использую QGIS, который предлагает ColorBrewer, cpt-city и другие палитры и цветовые схемы.


@obrl_soil предложил это Viridis набор цветов

введите описание изображения здесь


@underdark предположил, что это два типа 4 colors + whiteподхода.

введите описание изображения здесь

ЛЕВЫЙ: оранжевый-красный + белый (последовательный), ПРАВО: фиолетовый-оранжевый + белый (расходящийся)

Казухито
источник
Вы уже нашли хороший ответ, но я хотел бы познакомить вас с colorbrewer2.org, который позволяет генерировать красивые цветовые схемы
LaughU
@LaughU На самом деле это был сайт, на который я ссылался ... извините, если он не был четко упомянут. Но спасибо, это действительно хороший ресурс, я согласен.
Казухито

Ответы:

8

Вы смотрели на семью виридисов? Самый простой способ добавить их в QGIS - по этой ссылке - http://rocksandwater.net/blog/2016/07/qgis_perceptually_uniform_colorramps/

obrl_soil
источник
1
Большое спасибо @obrl_soil! Это здорово. Мне кажется, я видел название viridis в сообществе R некоторое время назад, но, вероятно, я не уделил достаточно внимания. (Добавлен результат viridis в мой пост в качестве правки).
Казухито
10

Поскольку ColorBrewer предлагает, только спектральная цветовая схема 5 классов является "безопасной" для использования фотокопировального устройства (то есть серая шкала). Самое простое решение - использовать какой-то другой способ различения классов, например штриховку.

В QGIS легко выбрать 5 различных штриховок в классификации, изменив кисть заливки.

введите описание изображения здесь

Или с помощью точечного массива заполните с разным расстоянием:введите описание изображения здесь

Ян Тертон
источник
1
Спасибо @iant, но я должен принять это (я имею в виду, ColorBrewer) подразумевает, что нет никакого способа произвести цветовую схему с 5 классами кроме того определенного набора? Если это так, у меня нет проблем с выводом.
Казухито
7

Colorbrewer 2.0 в основном говорит нам, что не существует «безопасной для фотокопии» цветовой схемы с 5 цветами, поэтому вот решение для 4 цветов:

введите описание изображения здесь

Конечно, он не считается «белым» в качестве потенциального 5-го цвета, поэтому это решение может быть все еще достаточно для вашего приложения.

Подземье
источник
1
Ницца. Добавление белого - блестящая идея, которая никогда не приходила в голову (я был почти готов отказаться от ColorBrewer). Благодаря!
Казухито
4

У меня такая же проблема. Мне нужно 8 классов. Я создал обходной путь, который позволяет вам по крайней мере сделать категории максимально различимыми. Это увеличивает расстояние между значениями насыщенности каждого цвета, которые создаются цветоделом по умолчанию. При этом вы получите наиболее различимые категории в ч / б печати. Эти два графика меняются незначительно, как вы можете видеть ниже, но, между прочим, это может иметь значение.

Нужно знать R, чтобы использовать скрипт:

library("ggplot2")
library("colorspace")
library("RColorBrewer")


# display all color scales with n=8
display.brewer.all(n = 8,type = "div")
# choose a brewer
brewer.pal(8,"Spectral")
# transform palette to HSV values
(palette.HSV<-as(hex2RGB(brewer.pal(8,"Spectral")), "HSV")) 

# plot
plot(1:8,1:8,pch=21,bg=hex(palette.HSV),col=hex(palette.HSV),cex=5)

# sort and get indices of HSV values
sort(palette.HSV@coords[,2],index.return=TRUE)

# calculate steps for distance
9/8 # 8 classes until 0.9 saturation

# change accordingly
palette.HSV@coords[1,2]<-0.7875 # swapped with second
palette.HSV@coords[2,2]<-0.675
palette.HSV@coords[3,2]<-0.5625
palette.HSV@coords[4,2]<-0.3375
palette.HSV@coords[5,2]<-0.225
palette.HSV@coords[6,2]<-0.1125
palette.HSV@coords[7,2]<-0.45
palette.HSV@coords[8,2]<-0.9

plot(1:8,1:8,pch=21,bg=hex(palette.HSV),col=hex(palette.HSV),cex=5)

# save your costum colorscale
my.scale<-hex(palette.HSV)

измененные значения измененные значения

исходные значения введите описание изображения здесь

изменить: если вы также хотите изменить яркость (см. обсуждение ниже), используйте следующий код:

# change brightness accordingly (reverse order)
palette.HSV@coords[1,3]<- 0.225
palette.HSV@coords[2,3]<-0.4
palette.HSV@coords[3,3]<-0.5625
palette.HSV@coords[4,3]<-0.9
palette.HSV@coords[5,3]<-0.7875
palette.HSV@coords[6,3]<-0.675
palette.HSV@coords[7,3]<-0.3
palette.HSV@coords[8,3]<-0.1125
joaoal
источник
1
Спасибо @joaoal! Вы не возражаете добавить представление в градациях серого для каждого изображения? Мое быстрое испытание вашего кода позволило получить почти идентичные изображения (для моих нетренированных глаз), когда они превратились в 8-битную шкалу серого.
Казухито
1
@Kazuhito не уверен, как это сделать в R. В bw print мое решение явно немного лучше, чем по умолчанию, однако, как я писал выше, трудно добиться действительно хороших различий, если вы используете 8 классов. в вашем случае с 5 классами это может быть лучше. Помимо улучшения цветовой шкалы, вы также можете рассмотреть возможность добавления символов на карту в центре каждого многоугольника, где каждый уникальный символ представляет отдельную категорию, или вы можете использовать разные стили заливки, например, шаблоны линий. Мое решение было для растровых данных, где вы не можете сделать такую ​​вещь.
Joaoal
2
+1 @joaoal Спасибо за вашу дополнительную информацию. Просто мысль, но как насчет того, чтобы изменить значение, palette.HSV@coords[x,3]соответствующее значению (или яркости) в цветовом пространстве HSV? (Вы работали над насыщением). Мой быстрый тест coords[ ,3]показал больше контраста, но я не уверен в вашей среде.
Казухито
2
@Kazuhito Я попробовал это для моего примера и не дал лучших результатов, меняя только яркость. Теоретически насыщенность напрямую связана с серостью, где 0 - белый, а 1 - черный при черно-белой печати или полноцветный, например, «красный» при цветной печати. Яркость также влияет на серость на отпечатке, но каким-то образом ваш диапазон ограничен, поскольку он меняет цвет между полноцветными, например, «красный» и «черный». Комбинация обоих может быть вариантом, и я добавил код выше, чтобы учесть это. У меня сложилось впечатление, что это только улучшает разницу в светлых тонах, но ухудшает темные.
Иоанн
Спасибо, приятно знать. Я также согласен, что мы не должны мириться с ценностью.
Казухито