如何将调色板 (n=5) 与第二个调色板 (n=4) 加上矩阵中的亮度变量 (n=4) 最佳混合(总共 5*4*4=80 种颜色)
Posted
技术标签:
【中文标题】如何将调色板 (n=5) 与第二个调色板 (n=4) 加上矩阵中的亮度变量 (n=4) 最佳混合(总共 5*4*4=80 种颜色)【英文标题】:How to mix optimally a color palette (n=5) with a second color palette (n=4) plus a luminance variable (n=4) in a matrix (total 5*4*4=80 colors) 【发布时间】:2022-01-04 02:27:45 【问题描述】:使用 R,是否有办法将红色调色板(n=5 级)与橙色调色板(n=4 级)混合,并根据亮度混合每种 5x4 生成的颜色(或透明度/不透明度)变量(n=4 级),使 5x4x4=80 种颜色彼此最佳区分(即均匀分布),然后得到对应颜色的十六进制代码?
下面是要混合的颜色/亮度矩阵的 Excel 概览。
非常感谢
【问题讨论】:
你可以平均rgb值col <- rgb(t(rowMeans(col2rgb(c('red', 'blue')))) / 255, maxColorValue = 1, alpha = 0:3 / 3); image(t(1:4), col = col)
谢谢你,这是一个有趣的方法。尽管我没有找到合适的方法/功能来均匀混合红色和橙色调色板(我一个一个地寻找最好的混合,感谢优秀的网站trycolors.com/custom),我使用样本图调整了 4 个对比度级别colorspace 包中的函数(变暗选项),如我自己的答案中所述。
【参考方案1】:
我没有找到合适的方式/功能来均匀混合红色和橙色调色板。因此,感谢优秀的网站trycolors.com/custom),我一一寻找最好的混音。然后,我使用 colorspace 包中的 swatchplot 函数(变暗选项)调整了 4 个对比度级别,如下所示:
# select your gradient colors (hexadecimal codes) and optimize them: https://trycolors.com/custom/
library(colorspace)
# better visualization for comparison of color shades with this layout:
a0_hex <- c(
"#ffffdd","#fdf3be","#ffea90","#fbdb7a",
"#f9ceca","#fdc2ae","#ffa98a","#f99662",
"#fb9991","#f58473","#ef6e44","#e56223",
"#f15854","#ef3418","#dd3818","#cc3a01",
"#d70303","#ca0303","#ba0808","#a60505")
# darken (or lighten) colors: https://colorspace.r-forge.r-project.org/reference/lighten.html
a1_dark <-
swatchplot(
" 0%" = a0_hex,
" 10%" = darken(a0_hex, 0.1),
" 20%" = darken(a0_hex, 0.2),
" 30%" = darken(a0_hex, 0.3),
nrow = 4, off = c(0, 0))
a2_dark <- as.data.frame(a1_dark)
a2_dark
# rearrange the order of colors as required
library(tidyr) # From long to wide table: https://mgimond.github.io/ES218/Week03b.html
a3_red_0 <- a2_dark %>% select(1:4) %>% pivot_longer(cols=1:4, names_to = "col", values_to = "hex")
a3_red_1 <- a2_dark %>% select(5:8) %>% pivot_longer(cols=1:4, names_to = "col", values_to = "hex")
a3_red_2 <- a2_dark %>% select(9:12) %>% pivot_longer(cols=1:4, names_to = "col", values_to = "hex")
a3_red_3 <- a2_dark %>% select(13:16) %>% pivot_longer(cols=1:4, names_to = "col", values_to = "hex")
a3_red_4 <- a2_dark %>% select(17:20) %>% pivot_longer(cols=1:4, names_to = "col", values_to = "hex")
# join and get all hex codes in one single column
a3_red_all <- rbind(a3_red_0, a3_red_1, a3_red_2, a3_red_3, a3_red_4) %>% select(!col)
# show the 5x4x4 = 80 colors
windows(200, 1800, pointsize = 12, xpos = 650, ypos = 25)
swatchplot(a3_red_all, nrow = 80, off = c(0, 0))
【讨论】:
以上是关于如何将调色板 (n=5) 与第二个调色板 (n=4) 加上矩阵中的亮度变量 (n=4) 最佳混合(总共 5*4*4=80 种颜色)的主要内容,如果未能解决你的问题,请参考以下文章