[Rd] I wish xlim=c(0, NA) would work. How about I send you a patch?
Duncan Murdoch
murdoch.duncan at gmail.com
Mon Apr 16 20:13:59 CEST 2012
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
More information about the R-devel
mailing list