R4MARKETING Telegram 1272
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



tgoop.com/R4marketing/1272
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Find your optimal posting schedule and stick to it. The peak posting times include 8 am, 6 pm, and 8 pm on social media. Try to publish serious stuff in the morning and leave less demanding content later in the day. How to Create a Private or Public Channel on Telegram? SUCK Channel Telegram 1What is Telegram Channels? How to Create a Private or Public Channel on Telegram?
from us


Telegram R4marketing | канал Алексея Селезнёва | Язык R
FROM American