[Rd] points(*, pch=NA) does *not* not draw the point (PR#6876)
Prof Brian Ripley
ripley at stats.ox.ac.uk
Wed May 12 16:20:56 CEST 2004
On Wed, 12 May 2004 maechler at stat.math.ethz.ch wrote:
> We say in ?points that 'pch' (among others) can be set to NA
> for omitting a point.
I don't think we actually do. We say
Points whose 'x', 'y', 'pch', 'col' or 'cex' value is 'NA' are
omitted from the plot.
and earlier
either be a 'character' or an integer code
I read that to mean that as.logical(NA) is incorrect, but that
as.character(NA) is correct and should result in the point being omitted.
In short, I disagree as to which is a very strict bug (although it makes
sense to allow logical NAs, of course).
The problems are both in FixupPch in src/main/plot.c. Can I leave you to
fix both?
> While this works in cases where there's at least one point left
> to draw, it fails in a simple case like this :
>
> > plot(1, pch = NA)
> Error in plot.xy(xy.coords(x, y), type = type, pch = pch, col = col, bg = bg, :
> invalid plotting symbol
>
> Both in R-patched or R-devel.
> A simple workaround {hinting at how to fix the C code} is
>
> > plot(1, pch = as.integer(NA))
>
> So this is easily fixable (and I'll commit a patch soon).
>
> ----
>
> A bit more problematic *) but not a bug in a very strict sense
> is the following :
>
> > plot(1, pch = as.character(NA))
> and
> > plot(1:4, pch=c("o",".", NA, "x"))
>
> which are identical to
>
> > plot(1, pch = "N")
> and
> > plot(1:4, pch=c("o",".", "N", "x"))
>
> but should either produce a warning (additional to using "N") or
> rather also treat the NA as "missing", i.e., not drawing a point.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-devel
mailing list