【问题标题】:Is there a function that calculates an average of n Hex colours in R?是否有一个函数可以计算 R 中 n 十六进制颜色的平均值?
【发布时间】:2020-01-23 02:10:59
【问题描述】:

我有一个带有样本行的 df。每个都有 Hex 格式的三个不同颜色的变量。 是否有一个函数可以在不将其转换为 rgb 的情况下对这些颜色进行平均?

   id       x       y       z
1   0 #EE30A7 #EE30A7 #3D3D3D
2   1 #ED31A5 #EC30A5 #3D3E3C
3   2 #EC33A4 #EA30A4 #3E3F3C
4   3 #EB34A3 #E830A3 #3F413C
5   4 #EA36A2 #E630A2 #40423C
6   5 #E937A1 #E530A1 #41443C
7   6 #E8399F #E330A0 #42453C
8   7 #E83A9E #E1309F #43473C
9   8 #E73C9D #DF319E #44483C
10  9 #E63E9C #DE319D #45493C

我想在这个 df 中添加另一个平均颜色的列。

【问题讨论】:

标签: r colors hex rgb


【解决方案1】:

我会尝试一下,尽管它可能很丑:

rgb(t(Reduce(`+`, lapply(dat[c("x","y","z")], col2rgb))/3), maxColorValue=255)
# [1] "#B33483" "#B23582" "#B13681" "#B03780" "#B03880" "#AF397F" "#AF3A7E" "#AE3B7D" "#AE3C7D"
#[10] "#AD3D7C"

基本上我使用col2rgb 创建一组 r/g/b 矩阵,然后我对其进行平均,然后转换回十六进制字符串。不过,我不确定这是否符合您的“一种在不将其转换为 rgb 的情况下平均这些颜色的函数”的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多