Есть много встроенных цветов и готовых палитр для пользователей R – если вы знаете, как их найти и использовать. Вот несколько моих любимых советов и инструментов для работы с цветами в R.

Как найти встроенные цвета R

Прямо в базу R встроено более 650 цветов. Они позволяют использовать названия цветов вместо шестнадцатеричных кодов или кодов RGB. В color() функция перечисляет все цвета имена, но это тебе не поможет видеть их.

Есть веб-сайты и PDF-файлы, где вы можете просмотреть все цвета и их внешний вид. Но почему бы не использовать вашу собственную таблицу с возможностью поиска в R?

Для этого я создал пакет, который вы можете скачать с GitHub, используя install_github() из пакетов пультов дистанционного управления или инструментов разработчика:

remotes::install_github("smach/rcolorutils", build_vignettes = TRUE)

(Добавление build_vignettes = TRUE в качестве аргумента install_github() также устанавливает виньетку пакета.)

Загрузите пакет как обычно, а затем запустите create_color_table() чтобы отобразить сортируемую поисковую таблицу цветов в R:

library(rcolorutils)
create_color_table(page_length = 10)

В create_color_table() функция имеет один необязательный аргумент, page_length, который по умолчанию равен 25.

Таблица встроенных цветов R с именами, образцами цвета, шестнадцатеричными кодами и значениями RGB. Шэрон Махлис, IDG

Функция create_color_table () генерирует таблицу встроенных цветов R.

Хотя вы можете выполнять поиск по названиям цветов, таким как «синий», не все голубые цвета содержат «синий» в своих названиях. Вот почему я включил столбцы для значений красного, зеленого и синего цветов RGB, чтобы вы также могли сортировать и фильтровать по ним. По крайней мере, ваши цвета могут оказаться в более логичном порядке, чем в алфавитном порядке по их именам. Чтобы сортировать по нескольким столбцам за раз, удерживайте нажатой клавишу Shift при щелчке по именам столбцов.

Таблица встроенных цветов R с именами, образцами цвета, шестнадцатеричными кодами и значениями RGB, поиск gr.y. Шэрон Махлис, IDG

Поиск gr.y в таблице цветов пакета rcolorutils.

Таблица позволяет выполнять поиск с использованием регулярных выражений. Например, вы можете выполнить поиск по запросу grай или грэй используя точку для «любой буквы» и выполняя поиск gr.y в таблице. Если вы это сделаете, вы увидите, что некоторые цвета повторяются с серым и серым в своих названиях. Таким образом, хотя во встроенных цветах R есть 657 цветовых записей, на самом деле нет 657 уникальных цветов.

Как искать “цвета R, подобные этому”

Также существует способ поиска «цвета, напоминающие этот конкретный цвет» без таблицы. Я обнаружил это при запуске демонстрации базового цвета R, которую вы можете запустить локально с помощью demo(colors).

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

Список встроенных цветов R, текст названий цветов с использованием фактического цвета Шэрон Махлис, IDG

Отображение встроенных цветов при использовании демо (цвета).

Но если вы прокрутите эти цветные текстовые дисплеи, вы придете к опции, которая говорит

## Now, consider choosing a color by looking in the
## neighborhood of one you know :
plotCol(nearRcolor("deepskyblue", "rgb", dist=50))

и дисплей, как показано ниже. Это полезный!

Изображение 5 разных цветов синих цветов: глубокого синего, глубокого синего2, бирюзового2, темно-бирюзового и голубого2. Шэрон Махлис, IDG

Блюз похож на «глубокий синий».

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

Если вы изучите код, который сгенерировал приведенное выше изображение пяти синих цветов, вы увидите, что задействованы две функции: nearRcolor() а также plotCol(). Я не смог получить доступ ни к одной из этих функций в базе R, не запустив демонстрацию цветов. Поскольку мне нужны эти функции без необходимости каждый раз запускать демонстрацию, я добавил код для них обоих в свой новый пакет rcolorsutils.

Если ты бежишь nearRcolor() на имени цвета R вы получаете именованный вектор с информацией о цвете. Затем вы можете нарисовать эти цвета с помощью plotCol() – включая установку количества отображаемых строк, чтобы все цвета не отображались в одной строке.

nearRcolor("tomato")
      0.0000       0.0281       0.0374       0.0403       0.0589       0.0643 
    "tomato"    "sienna1"     "brown1"      "coral"     "coral1"       "tan1" 
      0.0667       0.0723       0.0776       0.0882       0.0918       0.0937 
   "tomato2"    "sienna2"     "brown2"     "coral2"       "tan2" "firebrick1" 
plotCol(nearRcolor("tomato"), nrow = 3)
Шэрон Махлис, IDG

Участок с тремя рядами цветов, близких к «помидорному».

Если я ищу цвета рядом с «синим», я не получаю слишком много цветов:

 nearRcolor("blue")
0.0000 0.0667
"blue" "blue2"

Я могу изменить количество получаемых результатов, установив собственный rgb расстояние. Какое расстояние лучше использовать? Я просто возился с целым числом расстояния, пока не получил примерно то количество цветов, которое хотел бы видеть. Например, используя %>% синтаксис трубы и расстояние 135:

nearRcolor("blue", "rgb", dist = 135)  %>%
plotCol(nrow = 3)
Сетка 3х3 разных оттенков синего Шэрон Махлис, IDG

Цвета близкие к синему с настраиваемым расстоянием.

Пакет весов также имеет приятную функцию для нанесения цветов, show_col(), который можно использовать вместо plotCol():

nearRcolor("blue", "rgb", dist = 135) %>% 
scales::show_col()
Сетка 3 x 3 оттенков синего, с некоторыми белыми этикетками, но с одной черной этикеткой. Шэрон Махлис, IDG

Результаты функции show_col () для цветов, близких к «синему».

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

Как найти и использовать готовые цветовые палитры R.

В базовый R встроено несколько цветовых палитр, но, вероятно, наиболее популярными являются RColorBrewer а также виридис пакеты. Вы можете установить оба из CRAN.

Если вы также установите tmaptools пакет, вы получите отличное встроенное приложение для изучения палитр RColorBrewer и viridis, запустив palette_explorer().

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

Блестящее приложение, показывающее палитры от RColorBrewer и viridis Шэрон Махлис, IDG

Приложение palette_explorer пакета tmaptools.

Это могут быть все палитры, которые вам когда-либо понадобятся. Но если вы ищете большего разнообразия, есть другие пакеты R с готовыми палитрами. Есть пакеты палитры, вдохновленные Гарри Поттером, Игрой престолов, исламским искусством, национальными парками США и многим другим. Может быть сложно отслеживать все доступные пакеты палитры R, поэтому пакет палитры пытается сделать это за нас. Paletteer включает более 2000 палитр из 59 пакетов и классифицирует их на три группы: незаметные, непрерывные и динамические.

Мне немного сложно сканировать и сравнивать такое количество палитр. Итак, я сделал приложение Shiny, чтобы видеть их по категориям.

Вы можете загрузить код этого приложения, если хотите запустить его в своей системе:

скачать

Измените расширение файла с .txt на .R, установите необходимые пакеты и запустите файл app.R в RStudio. Шэрон Махлис

Снимок экрана, показывающий зеленую треугольную кнопку Шэрон Махлис

Запустите приложение Shiny в RStudio, щелкнув зеленый треугольник Run App

Измените имя файла с app.txt на app.R, убедитесь, что вы установили необходимые пакеты, а затем запустите приложение в RStudio с помощью кнопки «запустить приложение».

Приложение позволяет искать палитры по категориям: непрерывные, дискретные или динамические. Затем выберите нужный тип, то есть цвета, которые расходятся, цвета, которые находятся в последовательности, или цвета, которые являются качественными без какого-либо порядка. Эти классификации палитр взяты из пакета палитры, и некоторые из них могут быть неточными, поэтому я стараюсь рассматривать все три типа, чтобы убедиться, что я не упускаю ничего, что мне могло бы понравиться.

Снимок экрана, показывающий цветовую палитру с кодом R под ней, объясняющий, как использовать палитру. Шэрон Махлис, IDG

Блестящее приложение для отображения палитр, включенных в пакет палитры.

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

Создайте свою собственную палитру R и функцию палитры

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

Вы можете использовать любые цветные шестнадцатеричные коды в пределах ggplot2::scale_fill_manual(). Однако гораздо элегантнее создать свой собственный scale_fill() функция аналогична встроенным функциям ggplot2. В пакет палитры делает это очень легко.

Вот как это работает. Сначала запустите get_pal() работать с вектором цветов, чтобы создать из них палитру. Затем запустите либо get_scale_fill() или же get_scale_color() на результатах, чтобы превратить палитру в функцию ggplots, например

library(paletti)
my_colors <- c("#b7352d", "#2a6b8f", "#0f4461", "#26aef8")
scale_fill_my_palette <- get_pal(my_colors) %>%
get_scale_fill()
# OR
col_fill_my_palette <- get_pal(my_colors) %>%
get_scale_color()

Теперь я могу использовать свой новый scale_fill_my_palette() или же col_fill_my_palette() функция в ggplot, как вы можете видеть на этом графике некоторых игрушечных данных:

library(ggplot2)
toy_data <- data.frame(
Category=c("A","B","C","A", "C") ,
xval=factor(c("Mon", "Tue", "Wed", "Thur", "Fri"), levels = c("Mon", "Tue", "Wed", "Thur", "Fri"), ordered = TRUE) ,
yval=c(255,500,459,342, 386)
)
ggplot(toy_data, aes(x = xval, y = yval, fill = Category)) +
geom_col() +
xlab("") +
ylab("") +
theme_classic() +
scale_fill_my_palette()
Гистограмма с темно-красными, темно-синими и голубыми полосами из настраиваемой палитры Шэрон Махлис, IDG

Сюжет с индивидуальной палитрой.

Хотите больше советов и руководств по R? Направляйтесь к моему Делайте больше со страницей R.

Авторские права © 2021 IDG Communications, Inc.


#Максимально #используйте #цвета #палитры

Source link