Small change to plot.xy
OK -- so there are two objections to the proposal: 1) The factor might be a colour specifier 2) Using codes is not a good idea because there are only 8 colours available for an integer argument to col. I can see that both of these have merit, but I think they are both easy to work around, if necessary. No-one has disagreed that it's natural to want to pass a factor to col, and I believe that the vast majority of times when this occurs the factor is not designed explicitly to paint the points. I think I would let the first objection pass. Using codes to coerce the factor we still get different colours for different factors, just not the specified colours. This is not right, but it's rarely a disaster either and should be easy to spot for anyone who is expecting to see "slateblue" and gets "red". As for the second objection, I think this is valid and should be addressed, but at the same time it is a different problem. I often wondered why col = 1 was black (not really a colour at all, and not very good for boxplots) and, more pertinently, why col = 2 is red and col = 3 is green: isn't the most common form of colour-blindness red/green? At the very least, let's not have them next to each other in the list! We have 657 named colours to choose from: why not have a explicit "int2col" function that provides a bigger and better table? More-or-less the same arguments also apply to pch. Jonathan.
Jonathan Rougier wrote:
Hi everyone, Is there any reason why we should not automatically coerce a factor supplied as an argument to col in a plotting function? The following modification (to R-1.6.1) seems pretty harmless
plot.xy
function (xy, type, pch = 1, lty = "solid", col = par("fg"),
bg = NA, cex = 1, ...)
{
if (is.factor(col))
col <- codes(col)
.Internal(plot.xy(xy, type, pch, lty, col, bg, cex, ...))
}
<environment: namespace:base>
and I think it is natural and not really wrong to want to type, say,
data(iris) pairs(iris[, 1:4], col = iris[, 5])
and get the colours. Cheers, Jonathan. -- Jonathan Rougier Science Laboratories Department of Mathematical Sciences South Road University of Durham Durham DH1 3LE tel: +44 (0)191 374 2361, fax: +44 (0)191 374 7388 http://www.maths.dur.ac.uk/stats/people/jcr/jcr.html
______________________________________________ R-devel@stat.math.ethz.ch mailing list http://www.stat.math.ethz.ch/mailman/listinfo/r-devel
Jonathan Rougier Science Laboratories Department of Mathematical Sciences South Road University of Durham Durham DH1 3LE tel: +44 (0)191 374 2361, fax: +44 (0)191 374 7388 http://www.maths.dur.ac.uk/stats/people/jcr/jcr.html