Skip to content

points(*, pch=NA) does *not* not draw the point (PR#6876)

2 messages · Martin Maechler, Brian Ripley

#
We say in ?points  that 'pch' (among others) can be set to NA
for omitting a point.

While this works in cases where there's at least one point left
to draw, it fails in a simple case like this :
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
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.


Martin Maechler


---------------
*) because this isn't spotted when used in a context of
   plotting many things
#
On Wed, 12 May 2004 maechler@stat.math.ethz.ch wrote:

            
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?