如果我在数据框中有一个明确列出颜色名称的变量。有没有办法在写入时应用这些颜色值而不在scale_color_manual()
中映射它们?似乎geom_text()
中的“ color = font_color”就足够了,但是在我使用scale_color_manual()
之前,这些颜色值被视为字符串而不是真实的颜色参数。这是消除的一小步,但我想看看是否有可能。
library(tidyverse)
# add color values to simple table
mt_color <- mtcars %>%
group_by(cyl, am) %>%
summarise(mpg = mean(mpg)) %>%
ungroup() %>%
mutate(
font_color = case_when(
(percent_rank(mpg) > .9) | (percent_rank(mpg) < .1) ~ "white",
TRUE ~ "black")
)
# plot using color values as color argument
mt_color %>%
ggplot(aes(x = am, y = cyl, fill = mpg, label = round(mpg))) +
geom_tile() +
geom_text(aes(color = font_color), size = 5) +
scale_fill_gradientn(
colors = c("darkred", "grey", "grey", "grey", "darkblue"),
values = c(0, .1, .5, .9, 1)
) +
# the step I think can be eliminated:
scale_color_manual(
values = c(black="black", white="white"),
guide = FALSE)