#r #ggplot2
#r #ggplot2
Вопрос:
Пожалуйста, нужна помощь с scale_fill_gradient()
в ggplot2
. Рассмотрим этот простой пример:
library(tidyverse)
set.seed(3)
dat <- as.data.frame(matrix(runif(100, 0, 1), ncol = 10))
# turn from wide to long
dat2 <- dat %>%
rownames_to_column("model_1") %>%
gather(model_2, value, -model_1) %>%
mutate(model_1 = model_1 %>% factor(levels = 1:10),
model_2 = factor(gsub("V", "", model_2), levels = 1:10))
## plot data
ggplot(dat2, aes(model_1, model_2))
geom_tile(aes(fill = value))
geom_text(aes(label = round(value, 2)))
scale_fill_gradient(low = "yellow", high = "white")
Что я хотел бы сделать, так это иметь пользовательские правила затенения. Например, что-то вроде:
value < 0.05
: ярко-желтыйvalue >= 0.05 amp; value < 0.15
: бледно-желтыйvalue >= 0.15
: белыйis.na(value)
: белый
Есть ли какой-нибудь простой способ сделать это, пожалуйста? Боюсь, я действительно не следую документации для scale_fill_gradient()
.
Спасибо.
Ответ №1:
Вы можете попробовать добавить цвет вручную:
dat2 <- dat2 %>%
mutate(
my_color = case_when(
value < 0.05 ~ "#FFFF00" ,
value >= 0.05 amp; value < 0.15 ~ "#FFFFCC",
TRUE ~ "#FFFFFF"
)
)
ggplot(dat2, aes(model_1, model_2))
geom_tile(aes(fill = my_color))
geom_text(aes(label = round(value, 2)))
scale_fill_identity()