我有一个已知的九种颜色宇宙,我想用它来创建用户定义的带有函数的调色板。
col_universe <- list(dark_blue = "#034772", med_blue = "#2888BC",
light_blue = "#73B7CE", green = "#699D46", orange = "#EA8936", gold = "#F9C347",
dark_grey = "#58595B", medium_grey = "#7D7E81",light_grey = "#C1C2C4")
Run Code Online (Sandbox Code Playgroud)
我想做的是按名称创建任意长度的调色板。
custom_colors <- function(color1, color2, color3, ..., color9)
Run Code Online (Sandbox Code Playgroud)
那么我会像下面这样使用它,
pal1 <- custom_colors(dark_blue, green, gold)
pal2 <- custom_colors(gold, orange, light_grey, dark_grey)
Run Code Online (Sandbox Code Playgroud)
我希望pal1并pal2成为字符向量(将提供给 ggplot2)
c("#034772", "#699D46", "#F9C347")
c("#F9C347", "#EA8936", "#C1C2C4", "#58595B")
Run Code Online (Sandbox Code Playgroud)
用于match.call捕获参数:
custom_colors <- function(...) {
cl = match.call(expand.dots = TRUE)
sapply(cl[-1], function(col) col_universe[[as.character(col)]])
}
custom_colors(dark_blue, green, gold)
[1] "#034772" "#699D46" "#F9C347"
custom_colors(gold, orange, light_grey, dark_grey)
[1] "#F9C347" "#EA8936" "#C1C2C4" "#58595B"
Run Code Online (Sandbox Code Playgroud)
数据:
col_universe <- list(dark_blue = "#034772", med_blue = "#2888BC",
light_blue = "#73B7CE", green = "#699D46", orange = "#EA8936", gold = "#F9C347",
dark_grey = "#58595B", medium_grey = "#7D7E81",light_grey = "#C1C2C4")
Run Code Online (Sandbox Code Playgroud)