na.value не может работать в scale_fill_continuous() в r

#r #ggplot2 #dplyr

#r #ggplot2 #dplyr

Вопрос:

Я хочу установить цвет значения NA.

Но это не работает, когда я устанавливаю scale_fill_continuous(na.value = 'red') .

Воспроизводимый пример, подобный этому:

 df = data.frame(
  grade = c('class 1', 'class 1', 'class 2'),
  sex   = c('Female', 'Male', 'Female'),
  n     = c(1,5,3))
df

df %>% ggplot(aes(x = sex, y = grade, fill = n))  
  geom_tile()

df %>% ggplot(aes(x = sex, y = grade, fill = n))  
  geom_tile()  
  scale_fill_continuous(na.value = 'red')
 

Любая помощь будет высоко оценена!

Ответ №1:

В данных нет NA значения, вам нужно сначала сгенерировать его, а затем использовать код построения графика.

Один из способов сгенерировать недостающую комбинацию — использовать tidyr::complete .

 library(ggplot2)

tidyr::complete(df, grade, sex) %>%
  ggplot(aes(x = sex, y = grade, fill = n))  
  geom_tile()   
  scale_fill_continuous(na.value = 'red')
 

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

Комментарии:

1. Спасибо. Я проверил complete документ. * Для факторов используется полный набор уровней (а не только те, которые отображаются в данных).* Есть еще небольшой вопрос. Как я могу заполнить вектор факторов только теми, которые отображаются в данных. Например, df$grade = factor(df$grade, levels =c('class 1', 'class 2', 'class 3'))

2. Сделайте его символом df$grade <- as.character(df$grade)