# [R] How to plot curves with more than 8 colors

Don MacQueen macq at llnl.gov
Thu Dec 29 18:05:10 CET 2005

```I have found this little function useful when trying to choose colors:

showcols <-  function (indx = 0:6)
{
for (ii in unique(indx)) {
is <- 100 * ii + 1:100
if (min(is) > length(colors())) {
cat("Maximum value of arg is", floor(length(colors())/100),
"\n")
return(NULL)
}
foo <- matrix(colors()[is], nrow = 10)
par(mar = c(3, 3, 0.25, 0.25))
plot(1:10, 1:10, type = "n", yaxt = "n", xlab = "", ylab = "")
axis(2, at = 1:10, lab = 10:1)
for (j in 1:10) {
for (i in 1:10) {
points(j, 11 - i, col = foo[i, j], pch = 16,
cex = 4)
text(j, 11 - i - 0.3, foo[i, j], cex = 0.8)
}
}
if (length(indx) > 1 & ii < max(indx))
readline(paste("Currently showing group", ii, "  CR to continue "))
}
invisible(foo)
}

Just type
showcols()
at the R prompt. Then pick any 20 you happen to think are distinguishable.

Based on my own experience, I would doubt that it is possible to find
20 easily distinguishable colors.
But perhaps if you use both solid and dotted lines you can get 20
distinguishable lines.

-Don

At 10:48 AM +0800 12/28/05, Vincent Deng wrote:
>Hi,
>
>I think maybe I didn't specify color codes properly. That is,the
>difference between each color is not sharp enough for me to identify
>them as different colors.
>
>So can you tell me about how to specify the color properly so that the
>difference among each color can be identified clearly?
>
>Thanks again and again ...
>
>On 12/27/05, Uwe Ligges <ligges at statistik.uni-dortmund.de> wrote:
>>  Vincent Deng wrote:
>>
>>  > Dear Uwe,
>>  >
>>  > Sorry, I did not describe my question clearly. I created a matrix to
>>  > store color code using rgb function.
>>  >
>>  > abc = rgb(6:36,0,0,maxColorValue = 255)
>>  >
>>  > And after running codes like this
>>  >
>>  > for (i in c(1:20))
>>  > {
>>  >    points(...,...,col=abc[i])
>>  >    lines(...,col=abc[i])
>>  > }
>>  >
>>  > R still used 8 colors of abc color codes repeatedly to draw the diagram
>>  >
>>  > Any helps?
>>
>>
>>  No, it does not (in fact, all appears to be more or less black on my
>>  screen ;-)). Another example:
>>
>>  plot(1:255, col=rgb(1:255,0,0,maxColorValue = 255))
>>
>>  Uwe Ligges
>>
>>
>>
>>  > Best Regards...
>>  >
>>  > On 12/27/05, Uwe Ligges <ligges at statistik.uni-dortmund.de> wrote:
>>  >
>>  >>Vincent Deng wrote:
>>  >>
>>  >>>Hi,
>>  >>>
>>  >>>I'm a new hand in R language. I have about 20 groups of data[x,y] and
>>  >>>want to plot them on a graph. To do this, I write a for-loop as
>>  >>>following: (some codes are omitted for simplicity)
>>  >>>
>>  >>>for (i in c(1:20))
>>  >>>{
>>  >>>  points(...,...,col=i)
>>  >>>  lines(...,col=i)
>>  >>>}
>>  >>>
>>  >>>The problem is "R only plot them with 8 colors repeatly". Could anyone
>>  >>>help me solve this problem? Or is there any package providing plot
>>  >>>function without color limit?
>>  >>
>>  >>
>>  >>After typing
>>  >>
>>  >>  ?colors
>>  >>
>>  >>I get a nice help page that points me to a lot of other functions that
>>  >>generate more than 8 colors. Maybe your installation of R is broken and
>>  >>you cannot see this help page? You certainly tried to get help on colors
>>  >>as well.
>>  >>
>>  >>There is no limit of the color number in the functions above, simply
>>  >>specify the color you want to get. The only color limit applies for the
>>  >>device and for most devices and rgb colors this is 256^3.
>  > >>
>  > >>Uwe Ligges
>  > >>
>  > >>
>  > >>
>  > >>
>  > >>
>  > >>>Best Regards...
>  > >>>
>  > >>>______________________________________________
>  > >>>R-help at stat.math.ethz.ch mailing list
>  > >>>https://stat.ethz.ch/mailman/listinfo/r-help
>>http://www.R-project.org/posting-guide.html
>>  >>
>>  >>
>>
>>
>
>______________________________________________
>R-help at stat.math.ethz.ch mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help

--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA

```