Hi, How would you calculate the "mean colour" of several colours, for example c("#FF7C00","#00BF40","#FFFF00")? Yours, Atte Tenkanen

?strtoi You'll have to remove the "#" first, e.g. via substring() -- Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Sat, Apr 16, 2016 at 5:47 AM, Atte Tenkanen <attenka at utu.fi> wrote:> Hi, > > How would you calculate the "mean colour" of several colours, for example > c("#FF7C00","#00BF40","#FFFF00")? > > Yours, > > Atte Tenkanen > > ______________________________________________ > 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.

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