[R] Confused about specifying plot colors as RGB values

Uwe Ligges ligges at statistik.uni-dortmund.de
Sat Sep 18 16:37:29 CEST 2004


Paul Roebuck wrote:

> Based on reading 'rgb'

So, why are you not using rgb()?


 > documentation, I would have thought
> the following would have produced identical results. Can
> someone explain how to make this happen? I need to be able
> to specify an array of rgb values for the 'col' parameter.
> 
> 
> colnames.col <- c("black", "red", "blue", "green")
> colnames.rgb <- apply(as.matrix(colnames.col), 1, col2rgb)
> dimnames(colnames.rgb)[[2]] <- colnames.col
> 
> baseline <- 1:32
> offset2 <- 2*baseline
> offset3 <- 3*baseline
> offset4 <- 4*baseline
> offsets <- cbind(offset2, offset3, offset4)
> 
> # Produces expected result
> X11()
> matplot(baseline, col = colnames.col[1], type = "l")
> matlines(offsets, col = colnames.col[-1])
> 
> # Displays a ??yellow?? line
> X11()
> matplot(baseline, col = as.matrix(colnames.rgb[,1]), type = "l")
> matlines(offsets, col = colnames.rgb[,-1])
> 

Yes, because 255 is a color number that is interpreted as yellow.
Why do you think you can specify a matrix of integer values and R knows 
that you mean an rgb representation rather than color numbers?

What you can do now (but I don't think you really want to do it this 
way!) is:

   cn <- apply(colnames.rgb, 2,
     function(x) rgb(x[1], x[2], x[3], maxColorValue=255))

   matplot(baseline, col = cn[1]), type = "l")
   matlines(offsets, col = cn[-1])


Uwe Ligges



> ----------------------------------------------------------
> SIGSIG -- signature too long (core dumped)
> 
> ______________________________________________
> 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




More information about the R-help mailing list