[R] Reverse plot axes with xlim=rev(range(x)) fails with asp=1

Gregory Jefferis gsxej2 at cam.ac.uk
Sat Mar 5 19:07:18 CET 2005

Dear R users,

I would like to reverse the axes on some xy plots (for example to set the
origin at the top left rather than the bottom left).  I had planned to use
something of the following form:


ie reversing ylim to reverse the y axis.  This works fine however I also
want to use the parameter asp=1 to ensure that equal distances in the x or y
direction are plotted as such on the screen.  However the simple example I
showed above now fails:

> plot(y=y<-c(20,4,5,6),x=x<-c(10,20,30,40),ylim=rev(range(y)),asp=1)

The actual ylim used is considerably less than it should be, so no points
appear on the plot.

Can anyone suggest a simple remedy?

Many thanks,

Greg Jefferis.

PS I would guess that the origin of this behaviour is that plot.window
expects xlim (and ylim) to be in the order xmin,xmax (or ymin,ymax) when it
sets about redefining xlim and ylim if asp!=NA.  If that suggestion is
correct, I'm not quite sure why the restriction is necessary.

Gregory Jefferis, PhD                               and:
Research Fellow
Department of Zoology                               St John's College
Downing Street                                      Cambridge
Cambridge, CB2 3EJ                                  CB2 1TP

More information about the R-help mailing list