在十六进制代码中获得n种给定颜色的阴影

时间:2018-10-30 19:55:19

标签: r colors hex

假设我在十六进制代码(在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函数可以实现这一目标?

enter image description here

1 个答案:

答案 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
相关问题