Paul Roebuck
2004-Sep-17 20:32 UTC
[R] Confused about specifying plot colors as RGB values
Based on reading '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]) ---------------------------------------------------------- SIGSIG -- signature too long (core dumped)
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