I have a theme function and I would like to add scale_fill_manual(values=x)
inside the function and update all of my plots but it does not work if I add this line inside my_theme
function. Also I don't know how to supress the messages from loading the library using reprex
.
library(tidyverse, quietly = TRUE)
# Here I just create my HEX colors from RGB colors.
x <- tibble(r = c(187, 6, 226, 78, 221),
g = c(180, 110, 223, 118, 128),
b = c(135, 159, 204, 109, 71))
x <- modify(x, as.hexmode) %>%
unite(r, g, b, col="hex", sep="") %>%
map_df(~paste0("#", .x)) %>%
pull()
# This is my theme function and I would like to add scale_fill_manual,
# but then it does not work. I have tried different combinations.
my_theme <- function(){
theme_minimal() +
theme(title = element_text(color = "gray25"),
plot.subtitle = element_text(size=12),
plot.title = element_text(size=12),
plot.caption = element_text(color= "gray30"))
}
# But if I just add it in a separate line then it works.
mpg %>%
ggplot() +
geom_bar(aes(x = fct_infreq(class), fill=factor(cyl)), color="black", width = 0.5) +
labs(title= "CK farver") +
my_theme() +
scale_fill_manual(values = x) +
theme(axis.text.x = element_text(angle = -90, hjust = 0))
Created on 2019-04-16 by the reprex package (v0.2.0).
Unless you intend to pass additional theme specifications into
my_theme
, I don't think there's really a need to define it as a function. A list would do fine.The following should work for your purpose:
(Output plot not shown, because it's identical to the one in the question)
edit with function version of the above: