2d plotting and colours
Hi
Earl F. Glynn wrote:
"Mulholland, Tom" <Tom.Mulholland at dpi.wa.gov.au> wrote in message news:33F91FB3FDF42E4180428AC66A5CF30B02D3BAB0 at afhex01.dpi.wa.gov.au...
Since I was only concentrating on colour issues and not on your specific
problem I was just showing the possibilities.
Does this code help
n <- 5
par(mfrow = c(2,2))
palette("default")
barplot(1:25,col = 1:25)
palette(rainbow(n))
barplot(1:25,col = 1:25)
palette(rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep=".")))
barplot(1:25,col = 1:25)
require(cluster)
x <- runif(100) * 8 + 2
cl <- kmeans(x, n)
palette(rainbow(n))
plot(x, col = cl$cluster)
abline(h = cl$centers, lty = 2,col = "grey" )
palette(palette()[order(cl$centers)])
points(x,col = cl$cluster,pch = 20,cex = 0.4)
Using Windows with R 2.0.1 this looks fine at first. But when I resize the graphic, copy the graphic to a metafile and paste it into Word, or go to an earlier graphic and come back using "History", the colors ae all messed up. It's as if only the last palette is being used for all four plots in the figure. Oddly, if I copy the graphic as a bitmap, the colors are preseved in the bitmap. Is this a quirk of my machine or does this happen for others? Is it possible that the Windows palette manager is being used (which is such about obsolete) and that true color graphics are not being used (which is the easist way to avoid headaches from the Windows palette manager)?
I think this is happening because the setting of the R graphics palette
is not being recorded on the R graphics display list. Any window
refresh will produce the effect.
Even worse, the R graphics palette is global to the R session, not
per-device, so simply recording the setting of the palette on the
(per-device) display list would only create a more subtle undesirable
effect.
A possible solution is to make a per-device palette (and record the
setting of the palette on the display list), but this is probably too
big a change to get done for 2.1.0.
A workaround is simply to avoid using the palette. For example,
n <- 5
par(mfrow = c(2,2))
palette("default")
barplot(1:25,col = 1:25)
barplot(1:25,col = rainbow(n))
cols <- rgb((0:15)/15, g=0,b=0, names=paste("red",0:15,sep="."))
barplot(1:25,col = cols)
Paul
Dr Paul Murrell Department of Statistics The University of Auckland Private Bag 92019 Auckland New Zealand 64 9 3737599 x85392 paul at stat.auckland.ac.nz http://www.stat.auckland.ac.nz/~paul/