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