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

Jas*_*ter 4 r ggplot2 colorbrewer

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

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

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

cam*_*lle 6

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

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()
Run Code Online (Sandbox Code Playgroud)

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

mpg %>%
  group_by(year) %>%
  summarise(avg_hwy = mean(hwy)) %>%
  ggplot(aes(x = year, y = avg_hwy)) +
  geom_line(color = accent[1])
Run Code Online (Sandbox Code Playgroud)

至于知道调色板中的每种颜色是什么,而无需通过十六进制代码进行排序,RColorBrewer::display.brewer.pal就很方便,就像其他软件包中的类似功能一样rcartocolor。我有一组实用程序函数,在其中我编写了一个函数以在十六进制代码的向量中显示每种颜色的块的地方,经常使用它,因为否则非常繁琐。


MrF*_*ick 4

您始终可以设置颜色美感并关闭图例

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