将颜色酿造器应用于ggplot中的单行

时间:2019-04-15 14:04:57

标签: r ggplot2 colorbrewer

library(tidyverse)
library(RColorBrewer)
mtcars %>% 
  count(cyl) %>% 
  ungroup() %>% 
  ggplot(aes(cyl, n)) + 
  geom_line(size = 3) + 
  scale_color_brewer(palette = "Accent")

我经常会有一系列图形,每个图形的颜色主题为scale_color_brewer(palette = "Accent")。我想在所有图表上的整个.Rmd文件中都维护此主题。但是,此scale_color_brewer()仅在每个图上有多行时才有效。

对于上述情况(单行),我如何应用scale_color_brewer(palette = "Accent"),而没有在geom_line()中将唯一颜色指定为自变量?我希望有比手动过程更好的解决方案。使用不同的主题并必须查找所有不同的CMYK值会变得很乏味。

2 个答案:

答案 0 :(得分:6)

您可以采取两种操作来消除乏味,将要继续使用的调色板保存为变量,并设置geom默认值。我经常这样做是为了使几个调色板可以在整个文档中使用,例如定性和连续。

runtimes/win-x64/native包含指定地理区域的默认参数列表,但是您仍然可以添加或覆盖这些默认值,如下所示。

update_geom_defaults

library(dplyr)
library(ggplot2)

accent <- RColorBrewer::brewer.pal(7, "Accent")
# item 6 is hot pink
update_geom_defaults("line", list(color = accent[6]))

mtcars %>% 
  count(cyl) %>% 
  ggplot(aes(x = cyl, y = n)) + 
    geom_line()

mpg %>%
  group_by(year) %>%
  summarise(avg_cty = mean(cty)) %>%
  ggplot(aes(x = year, y = avg_cty)) +
    geom_line(size = 2)

要知道调色板中的每种颜色是什么而无需通过十六进制代码进行排序,mpg %>% group_by(year) %>% summarise(avg_hwy = mean(hwy)) %>% ggplot(aes(x = year, y = avg_hwy)) + geom_line(color = accent[1]) 就很方便,RColorBrewer::display.brewer.pal等其他软件包中的类似功能也很方便。我有一组实用程序函数,我经常在其中编写function来显示十六进制代码向量中每种颜色的块,因为否则非常繁琐。

答案 1 :(得分:4)

您始终可以设置色彩美感,只需关闭图例

mtcars %>% 
  count(cyl) %>% 
  ungroup() %>% 
  ggplot(aes(cyl, n, color="A")) + 
  geom_line(size = 3) + 
  scale_color_brewer(palette = "Accent", guide="none")