Как мне изменить значение цвета только одного значения в ggplot2 scale_fill_brewer?

У меня есть фрейм данных R (df), который я рисую в виде гистограммы в ggplot2, и раскраска на основе столбца в фрейме данных ( df $ type ). Прямо сейчас я использую шаблон окраски по умолчанию ( scale_fill_brewer ) для назначения цветов.

Как я могу назначить черный цвет одному значению ( df $ type == -1 ) и использовать scale_fill_brewer для назначения остальных цветов? (все остальные типы df $ представляют собой набор целых чисел от 1 до X, где X - количество уникальных значений)

До сих пор мне удавалось делать это вручную, выясняя набор цветов scale_fill_brewer использует для N различных элементов, затем предварительно определяет черный цвет и передает его в scale_fill_manual .

rhg_cols1<- c("#000000","#F8766D","#7CAE00","#00BFC4","#C77CFF" )
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) + 
  geom_bar()+ scale_fill_manual(values = rhg_cols1)

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

что-то вроде:

ggplot(y=values,data=df, aes(x=name, fill=factor(type))) +
  geom_bar()+ scale_fill_brewer(value(-1, "black")

Спасибо!

РЕДАКТИРОВАТЬ: Решение должно работать для более чем 30 цветов и работать для "Set2" ColorBrewer

21
задан Tung 13 April 2019 в 23:31
поделиться