r - 在十六进制代码中获取给定颜色的 n 个阴影
问题描述
假设我有这个十六进制代码中的颜色向量(in 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"))
我从这里获取了这些阴影,对于给定的颜色输入,它给出了它的阴影列表。
知道是否有R
实现此功能的功能吗?
解决方案
物有所值:
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
推荐阅读
- c - 为什么这不是在 C 中创建默认结构实例的有效方法?
- virtualenv - 使用诗歌外壳时如何动态设置环境变量?
- flutter - 局部变量'basename'在声明之前不能被引用/Flutter
- javascript - 如何将 MySQL 服务器与 windows 的电子应用程序包集成?
- mysql - 在案例表达式 Redshift 中摆脱 group by 变量
- path - ENOENT:没有这样的文件或目录 readFileSync
- flutter - 在 Flutter Web 中上传大文件
- google-apps-script - 我可以在 GAS 中有多个 toast 吗?
- azure - Azure Log Analytics:如何同时显示 AppServiceConsoleLogs 和 AppServiceHTTPLogs?
- nestjs - 如何在 Nest JS 中实现 Retrace 分析工具