[R] Selecting complementary colours

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


Dear Deepayan,

I actually thought of the equivalent of this approach, but it doesn't do
quite what I want.

In retrospect, I didn't specify the problem clearly: What I want to be able
to do is to place text on a background of arbitrary (but known RGB) colour
so that the text is legible. I guess that this is better described as a
"contrasting" than a "complementary" colour.

Your solution, for example breaks down for grays:

> mycol <- "#888888"
> do.call(rgb, as.list(1 - col2rgb(mycol) / 255))
[1] "#777777"

Thank you for the suggestion.

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: r-help-bounces at stat.math.ethz.ch 
> [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Deepayan Sarkar
> Sent: Monday, May 21, 2007 6:45 PM
> To: John Fox
> Cc: r-help at stat.math.ethz.ch
> Subject: Re: [R] Selecting complementary colours
> 
> On 5/21/07, John Fox <jfox at mcmaster.ca> 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.
> >
> > Any suggestions would be appreciated.
> 
> You want rgb2col. The following should work for any standard color
> specification:
> 
> > mycol = "royalblue"
> > do.call(rgb, as.list(1 - col2rgb(mycol) / 255))
> [1] "#BE961E"
> 
> -Deepayan
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> 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