假设我在十六进制代码(在R
中)具有以下颜色向量:
colors <- c("#62B200","#FF6C91","#F57962","#00C1A9","#EE8044")
我正在寻找一种以n
较深的阴影(即拉向黑色)扩展每种颜色的方法。
例如,如果n
= 2,这将是展开的颜色data.frame
:
expanded.colors.df <- data.frame(original.color = c("#62B200","#62B200","#FF6C91","#FF6C91","#F57962","#F57962","#00C1A9","#00C1A9","#EE8044","#EE8044"),
expanded.color = c("#62B200","#58A000","#FF6C91","#E56182","#F57962","#DC6C58","#00C1A9","#00AD98","#EE8044","#D6733D"))
我从here中获取了这些阴影,对于给定的颜色输入,这些阴影给出了其阴影的列表。
是否知道是否有R
函数可以实现这一目标?
答案 0 :(得分:2)
对于它的价值:
library(tidyverse)
colors <- c("#62B200","#FF6C91","#F57962","#00C1A9","#EE8044")
#darken each color n times in increments of steps towards black
ExpandColors <- function(colors, n, steps = 11){
if(n <= steps){
suppressWarnings({
sapply(colors, function(x){colorRampPalette(c(x, "#000000"))(steps)}) %>%
as.data.frame() %>%
filter(row_number() <= n) %>%
gather(key = original.color, value = expanded.color)
})
}else{
warning("Select n < steps!")
}
}
ExpandColors(colors, n = 2)
original.color expanded.color
1 #62B200 #62B200
2 #62B200 #58A000
3 #FF6C91 #FF6C91
4 #FF6C91 #E56182
5 #F57962 #F57962
6 #F57962 #DC6C58
7 #00C1A9 #00C1A9
8 #00C1A9 #00AD98
9 #EE8044 #EE8044
10 #EE8044 #D6733D