[R] Selecting complementary colours

John Fox jfox at mcmaster.ca
Tue May 22 02:22:53 CEST 2007


Dear Achim,

As I mentioned in my response to Deepayan's suggestion, I didn't specify the
original problem clearly: The object is to get contrasting colours, so that
when one is plotted over the other, the two will be readily distinguishable.
Your suggestions don't do this for neutral colours:

> x <- "#888888"
> y_hcl <- as(hex2RGB(x), "polarLUV")
> y_hcl at coords[1, "H"] <- y_hcl at coords[1, "H"] + 180
> hex(y_hcl)
[1] "#888888"
 
> y_hsv <- as(hex2RGB(x), "HSV")
> y_hsv at coords[1, "H"] <- y_hsv at coords[1, "H"] + 180
> hex(y_hsv)
[1] "#888888"

Thank you for trying to help.

John

--------------------------------
John Fox, Professor
Department of Sociology
McMaster University
Hamilton, Ontario
Canada L8S 4M4
905-525-9140x23604
http://socserv.mcmaster.ca/jfox 
-------------------------------- 

> -----Original Message-----
> From: Achim Zeileis [mailto:Achim.Zeileis at wu-wien.ac.at] 
> Sent: Monday, May 21, 2007 7:07 PM
> To: John Fox
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] Selecting complementary colours
> 
> On Mon, 21 May 2007, John Fox wrote:
> 
> > Dear r-helpers,
> >
> > I wonder whether, given the "#rrggbb" representation of a colour, 
> > there is a simple way to select the complementary colour, 
> also expressed as a "#rrggbb"
> > string.
> 
> Is the complementary color uniquely defined? My understanding 
> is that you can take opposite colors on a color wheel, but 
> there are of course various color wheels available. With 
> "colorspace" you can experiment with this,
> e.g.:
>   x <- "#81A9D0"
>   y_hcl <- as(hex2RGB(x), "polarLUV")
>   y_hcl at coords[1, "H"] <- y_hcl at coords[1, "H"] + 180
>   y_hcl <- hex(y_hcl)
> which is a bit more balanced than
>   y_hsv <- as(hex2RGB(x), "HSV")
>   y_hsv at coords[1, "H"] <- y_hsv at coords[1, "H"] + 180
>   y_hsv <- hex(y_hsv)
> 
> hth,
> Z
> 
> 
>



More information about the R-help mailing list