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

baptiste auguie baptiste.auguie at googlemail.com
Mon Apr 16 22:29:20 CEST 2012


Hi,

Using range wouldn't help if you wanted to restrict one of the limits,
not stretch it

plot(1:11, y <- seq(-5, 5), ylim= range(0, y))

baptiste

On 17 April 2012 08:20, Greg Snow <538280 at gmail.com> wrote:
> The simple work around is to use the range function, if you use
> something like:  xlim=range(0,x) then 0 will be included in the range
> of the x axis (and if there are values less than 0 then those values
> will be included as well) and the max is computed from the data as
> usual.  The range function will also accept multiple vectors and make
> the range big enough to include all of them on the plot (this is what
> I use when I will be adding additional information using points or
> lines).
>
> With this functionality in range I don't really see much need for the
> proposed change, maybe an example on the plot help page to show this
> would suffice.
>
> On Mon, Apr 16, 2012 at 11:52 AM, Paul Johnson <pauljohn32 at gmail.com> wrote:
>> I'm looking for an R mentor.  I want to propose a change in management
>> of plot options xlim and ylim.
>>
>> 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
>> --
>> Paul E. Johnson
>> Professor, Political Science    Assoc. Director
>> 1541 Lilac Lane, Room 504     Center for Research Methods
>> University of Kansas               University of Kansas
>> http://pj.freefaculty.org            http://quant.ku.edu
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>
>
> --
> Gregory (Greg) L. Snow Ph.D.
> 538280 at gmail.com
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list