使用变量中列出的颜色值,而不在scale_color_manual()中映射它们

时间:2018-07-24 17:50:45

标签: r ggplot2

如果我在数据框中有一个明确列出颜色名称的变量。有没有办法在写入时应用这些颜色值而不在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)

0 个答案:

没有答案