[R] Creating a vector of colours that are as different from one another as possible

Petr Pikal petr.pikal at precheza.cz
Tue Dec 21 14:37:15 CET 2004

```
On 21 Dec 2004 at 11:05, michael watson (IAH-C) wrote:

> Hi
>
> I want to create a vector of colors that are as different from one
> another as possible.  ?rainbow states "Conceptually, all of these
> functions actually use (parts of) a line cut out of the 3-dimensional
> color space...".  This suggests to me that the resulting colors are
> all placed on this "line" and are equi-distant along it.  The
> resulting color palette is a range of colours where adjacent colours
> are actually quite similar, especially when n (the number of colours)
> is high.
>
> Conceptually I guess what I want is colors from a 3D polygon in 3D
> colour space, where the number of vertices in the polygon is n,
> resulting in a color palette where the colors are all quite different
> from one another.  Is this possible or am I talking crap? (I've only
> had one coffee this morning)

Hi Micheal

With increased number of colors you always end with neighbour
colors quite similar. If I understand the rainbow function correctly
it sets saturation to 1 (maximum) value to 1 (maximum) and divide
the third component hue to equally spaced intervals to get the most
different colours from given range of hues.

You can also experiment with hsv() function

> plot(1:11, col = hsv(h = seq(0,1,.1), s=1, v=0)) #all black
> plot(1:11, col = hsv(h = seq(0,1,.1), s=1, v=1)) # different colours

You can imagine hue as a circle from 0 to 360 and if you want to
have neighbouring colours to be the most different you have to
choose them from oposit parts of a circle e.g. 0,180 or 90,270.

So

barvy<-rainbow(12)
vyber<-c(1,7,3,9,5,11,2,8,4,10,6,12)
plot(1:12,col=rainbow(12)[vyber])

will give you a sequence of 12 colours which are by my opinion
most different.

Cheers
Petr

>
> Mick
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help