tgoop.com/R4marketing/1272
Last Update:
colouR: Получить палитру проанализировав цвета изображения
Некоторое время назад я рассказывал о пакетах с наборами палитр, вдохновлённых национальными парками и художественного Метропόлитен-музея, почитать о них можно тут и тут.
На днях мне на глаза попался пакет colouR
, который позволяет вам проанализировать любое изображение в форматах jpg или png, из локального файла или по ссылке, и получить его палитру. Основной функцией пакета является getTopCol()
, которая имеет следующий набор аргументов:
● path
- Путь к локальному файлу изображения или URL
● n
- Количество цветов, которое необходимо получить в палитре
● exclude
- Позволяет исключить из палитры большинство оттенков чёрного и белого
● sig
- Целое число, позволяет округлять количество знаков после запятой, в определении какую часть изображения занимает цвет
● avgCols
- Логическое TRUE / FALSE, надо ли усреднять цвета в группы
● n_clusters
- Количество кластеров, используемых для группировки цветов, имеет смысл только при avgCols = TRUE
1. Пример анализа цветовой палитры изображения, и использования полученной палитры в `ggplot2`
Ниже пример анализа цветовой палитры изображения из интернета. само изображение и результат анализа его палитры вы видите на изображении к посту.
library(colouR)В данном случае, мы группируем (
library(ggplot2)
library(dplyr)
# Анализ палитры изображение с усреднением цветов
top10 <- getTopCol(
path = "https://static.make.ua/catalog/35/city-1491__1557487852__300h.jpg",
n = 5,
avgCols = T,
n_clusters = 10,
exclude = T,
)
# Сортируем цвета
top10$hex <- factor(top10$avg_color, levels = top10$avg_color)
# Выводим график по цветам
ggplot(top10, aes(x = hex, y = freq)) +
geom_bar(stat = 'identity', fill = top10$hex) +
theme_dark() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
xlab('HEX colour code') +
ylab('Frequency')
# Выводим палитру
plotPalette(top10$avg_color)
avgCols = TRUE
) все полученные из изображения цвета в 10 групп (n_clusters = 10), говорим исключить все известные пакету оттенки чёрного и белого (
exclude = TRUE), и взять 5 из полученных групп цветов, которые заполняют большую часть изображения (
n = 5).
2. Используем полученную палитру в ggplot2
Пакет
colouR
включает две дополнительные функции для удобной совместимости с ggplot2
:●
scaleFill()
● scaleColor()
Но, эти функции судя по всему работают только с встроенными в сам пакет палитрами, а собственные палитры вы можете использовать традиционным способом, передав их в аргументы функций scale_*()
:# Используем полученную палитру в ggplot2Читайте так же:
# подготовка данных
manufacturer_counts <- mpg %>%
group_by(manufacturer) %>%
summarize(count = n()) %>%
head(5)
mpgsort <- manufacturer_counts[order(manufacturer_counts$count, decreasing = TRUE), ]
mpgsort$manufacturer <- factor(mpgsort$manufacturer, levels = mpgsort$manufacturer)
# Строим график с использованием полученной палитры
ggplot(mpgsort, aes(x = manufacturer, y= count, fill = manufacturer)) +
geom_bar(stat = 'identity') +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = top10$avg_color)
- NatParksPalettes: Пакет цветовой палитры, вдохновленный национальными парками
- Палитры в R
- Темы для ggplot2 основанные на телешоу
Полезные ссылки:
- Сайт пакета colouR
#заметки_по_R
BY R4marketing | канал Алексея Селезнёва | Язык R
Share with your friend now:
tgoop.com/R4marketing/1272