#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)