[R] Convert color hex code to color names

David L Carlson dcarlson at tamu.edu
Mon Apr 13 19:07:11 CEST 2015


And expanding at a more elementary level. The reason you need to find the smallest difference is 
that all of the possible colors do not have names. There are 256^3 = 16,777,216 possible rgb color designations, but only 657 named colors. You can create a data frame of the named colors and their rgb designations using

> clrs <- data.frame(Color=colors(), RGB=rgb(t(col2rgb(colors())),
    maxColorValue=255), stringsAsFactors=FALSE)
> str(clrs)
'data.frame':   657 obs. of  2 variables:
 $ Color: chr  "white" "aliceblue" "antiquewhite" "antiquewhite1" ...
 $ RGB  : chr  "#FFFFFF" "#F0F8FF" "#FAEBD7" "#FFEFDB" ...
> head(clrs)
          Color     RGB
1         white #FFFFFF
2     aliceblue #F0F8FF
3  antiquewhite #FAEBD7
4 antiquewhite1 #FFEFDB
5 antiquewhite2 #EEDFCC
6 antiquewhite3 #CDC0B0

So most colors do not have names. In your example, none of the colors in rainbow(6) have names: 

> rain <- rainbow(6)
> sum(clrs$RGB %in% rain)
[1] 0

-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352


-----Original Message-----
From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Boris Steipe
Sent: Monday, April 13, 2015 11:44 AM
To: Alejo C.S.
Cc: r-help at r-project.org
Subject: Re: [R] Convert color hex code to color names

To add slightly to that:

What you want to do is write a function that returns the named color that has the smallest difference to your input hex-triplet. But note that color difference is a large topic. Assuming you want to minimize *perceptual* differences, you want to calculate your differences in Lab color space. The function convertColor() has the option to convert hex to Lab. Example:
convertColor(t(col2rgb("thistle")), from="sRGB", to="Lab", scale.in=255)

Within Lab space, you can take the Euclidian distance.

That all said, I can't imagine why one would want to do this in the first place - color triplets are much more convenient than label strings :-)


B.




On Apr 13, 2015, at 11:45 AM, Thierry Onkelinx <thierry.onkelinx at inbo.be> wrote:

> A combination of rgb(), col2rgb() and colors() can gives hex values for the
> named colors.
> 
> ir. Thierry Onkelinx
> Instituut voor natuur- en bosonderzoek / Research Institute for Nature and
> Forest
> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
> Kliniekstraat 25
> 1070 Anderlecht
> Belgium
> 
> To call in the statistician after the experiment is done may be no more
> than asking him to perform a post-mortem examination: he may be able to say
> what the experiment died of. ~ Sir Ronald Aylmer Fisher
> The plural of anecdote is not data. ~ Roger Brinner
> The combination of some data and an aching desire for an answer does not
> ensure that a reasonable answer can be extracted from a given body of data.
> ~ John Tukey
> 
> 2015-04-13 17:28 GMT+02:00 Alejo C.S. <alej.c.s at gmail.com>:
> 
>> Hi all, I want to convert the output of:
>> 
>>> rainbow(6)
>> 
>>> [1] "#FF0000FF" "#FFFF00FF" "#00FF00FF" "#00FFFFFF" "#0000FFFF"
>> "#FF00FFFF"
>> 
>> To a vector of color names. Any tip?
>> 
>> 
>> Thanks in advance
>> 
>> C.
>> 
>>        [[alternative HTML version deleted]]
>> 
>> ______________________________________________
>> 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.
>> 
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> 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.

______________________________________________
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