[R] Mean of hexadecimal numbers

boB Rudis bob at rudis.net
Sat Apr 16 19:53:28 CEST 2016


grDevices has `convertColor()` and the `colorspace` has other
functions that can convert from RBG to Lab space. You should convert
the RGB colors to Lab and average them that way (or us other functions
to convert to HSL or HSV). It all depends on what you are trying to
accomplish with the "average" color determination.

-Bob

On Sat, Apr 16, 2016 at 12:03 PM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
> On 16/04/2016 8:47 AM, Atte Tenkanen wrote:
>>
>> Hi,
>>
>> How would you calculate the "mean colour" of several colours, for
>> example c("#FF7C00","#00BF40","#FFFF00")?
>>
>
> Bert answered your subject line question.  Your text is asking something
> else:  if those are colours, you don't want to treat each of them as a
> single integer.
>
> A simple-minded approach would split them into 3 hex numbers, and average
> those (using Bert's solution).
>
> A more sophisticated approach would take into account that they are really
> colours.  You could probably put together something using the colorRamp or
> colorRampPalette functions to average in perception space.  For example,
>
> # Average the 1st two by taking the middle colour of a 3 colour palette
> x <- colorRampPalette(c("#FF7C00","#00BF40"), space = "Lab")(3)[2]
>
> # Average in the third by taking the 2nd of a 4 colour palette, so x
> # gets twice the weight
> colorRampPalette(c(x, "#FFFF00"), space = "Lab")(4)[2]
>
> Duncan Murdoch
>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list