Эта проблема также может быть исправлена с помощью параметра scale_fill_continuous
scale_fill_continuous(na.value = 'salmon')
Редактировать ниже:
Это только заполняет явно (т.е. значения, которые являются NA) пропущенными значениями.(Возможно, он работал по-другому в предыдущих версиях ggplot, мне лень проверять)
См. Следующий код для примера:
library(tidyverse)
Data <- expand.grid(x = 1:5,y=1:5) %>%
mutate(Value = rnorm(25))
Data %>%
filter(y!=3) %>%
ggplot(aes(x=x,y=y,fill=Value))+
geom_tile()+
scale_fill_continuous(na.value = 'salmon')
Data %>%
mutate(Value=ifelse(1:n() %in% sample(1:n(),22),NA,Value)) %>%
ggplot(aes(x=x,y=y,fill=Value))+
geom_tile()+
scale_fill_continuous(na.value = 'salmon')
Простое решение для этого заключается виспользуйте функцию complete, чтобы сделать пропущенные значения явными.
Data %>%
filter(1:n() %in% sample(1:n(),22)) %>%
complete(x,y) %>%
ggplot(aes(x=x,y=y,fill=Value))+
geom_tile()+
scale_fill_continuous(na.value = 'salmon')
В некоторых случаях функция расширения может оказаться более полезной, чем функция complete.