r - 将 color brewer 应用于 ggplot 中的一行

标签 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 值变得乏味。

最佳答案

您可以做两件事来消除乏味,将要继续使用的调色板保存到变量中,并设置 geom 默认值。我经常这样做是为了在整个文档中准备好几个调色板,比如一个定性的和一个连续的。
update_geom_defaults获取指定 geom 的默认参数列表,但您仍然可以添加或覆盖这些默认值,如下所示。

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很方便,其他包中的类似功能也很方便,比如 rcartocolor .我有一个我经常使用的实用函数包,我写了一个 function在十六进制代码向量中显示每种颜色的块,否则会很乏味。

关于r - 将 color brewer 应用于 ggplot 中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55690964/

相关文章:

r - R 中分面图的颜色条宽度

r - ggsignif 包错误 stat_signif 需要以下缺失的美观 : y

r - 使用 ggplot 和 R 用多边形裁剪轮廓

r - 在 ggplot2 中复制(和修改)离散轴

r - 有没有办法为 ggsave 设置新的默认值?

R ggplot 改变堆积条形图中一个变量的颜色

r - 如何在不同颜色的啤酒调色板中获得与散点图中的点不同的回归线?

R:使用重要性采样的蒙特卡罗积分