[Rd] I wish xlim=c(0, NA) would work. How about I send you a patch?

William Dunlap wdunlap at tibco.com
Mon Apr 16 20:26:17 CEST 2012


plot(1:10, xlim=c(10,1)) reverses the x axis.
If we allow plot(1:10, xlim=c(5,NA)), which
direction should it go?    Would this require new
parameters, {x,y}{min,max} or new paremeters
{x,y}{axisDirection}?

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com


> -----Original Message-----
> From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-project.org] On Behalf
> Of Duncan Murdoch
> Sent: Monday, April 16, 2012 11:14 AM
> To: Paul Johnson
> Cc: R Devel List
> Subject: Re: [Rd] I wish xlim=c(0, NA) would work. How about I send you a patch?
> 
> On 12-04-16 1:52 PM, Paul Johnson wrote:
> > I'm looking for an R mentor.  I want to propose a change in management
> > of plot options xlim and ylim.
> 
> Your suggestion sounds reasonable, but because plot limits are such a
> commonly used parameter, it would have to be done quite carefully.  The
> questions I'd ask before implementing it are:
> 
>   - Are there other locations besides plot.default where xlim and ylim
> are specified?  I'd like to have them updated consistently.
> 
>   - Are there any conflicting uses of NA for a limit in published packages?
> 
>   - Which package authors would need to be told about this change, so
> they could make a compatible change?
> 
>   - Where does it need to be documented?
> 
> Duncan Murdoch
> 
> >
> > Did you ever want to change one coordinate in xlim or ylim? It happens
> > to me all the time.
> >
> > x<- rnorm(100, m=5, s=1)
> > y<- rnorm(100, m=6, s=1)
> > plot(x,y)
> >
> > ## Oh, I want the "y axis" to show above x=0.
> >
> > plot(x,y, xlim=c(0, ))
> >
> > ##Output: Error in c(0, ) : argument 2 is empty
> >
> >   plot(x,y, xlim=c(0,NA ))
> > ## Output: Error in plot.window(...) : need finite 'xlim' values
> >
> >
> > I wish that plot would let me supply just the min (or max) and then
> > calculate the other value where needed.
> > It is a little bit tedious for the user to do that for herself.  The
> > user must be knowledgeable enough to know where the maximum (MAX) is
> > supposed to be, and then supply xlim=c(0, MAX). I can't see any reason
> > for insisting users have that deeper understanding of how R calculates
> > ranges for plots.
> >
> > Suppose the user is allowed to supply NA to signal R should fill in the blanks.
> >
> > plot(x,y, xlim=c(0, NA))
> >
> >
> > In plot.default now, I find this code to manage xlim
> >
> >     xlim<- if (is.null(xlim))
> >          range(xy$x[is.finite(xy$x)])
> >
> > And I would change it to be something like
> >     ##get default range
> >     nxlim<- range(xy$x[is.finite(xy$x)])
> >
> >     ## if xlim is NULL, so same as current
> >      xlim<- if (is.null(xlim)) nxlim
> > ## Otherwise, replace NAs in xlim with values from nxlim
> >      else xlim[ is.na(xlim) ]<- nxlim[ is.na(xlim) ]
> >
> >
> > Who is the responsible party for plot.default.  How about it?
> >
> > Think of how much happier users would be!
> >
> > pj
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list