[R] asp=1 and aspect ratio

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Mar 19 16:38:22 CET 2004


par(pty="s") is designed to set square plotting regions.  (That is in `An 
Introduction to R', as well as used frequently in MASS.)

plot(0:21, 0:21, type="n", xlab="x", ylab="x")
points(x,y)
abline(0,1)

is one way to do it thereafter, as well as

plot(x,y,xlim=lims,ylim=lims);abline(0,1)


On Fri, 19 Mar 2004, Robin Hankin wrote:

> 
> Hi everyone
> 
> I want a square scatterplot with abline(0,1) going exactly through the
> SW and NE corners.  By "square" I mean that the plotting region is
> exactly square, and that the axis limits are identical.
> 
> x <- 1:20
> y <- x+rep(c(-1,1),10)
> lims <- range(c(x,y))
> 
> None of the following do this:
> 
> plot(x,y) ; abline(0,1)         #not square
> plot(x,y,asp=1);abline(0,1)     #diagonal line misses corners
> 
> plot(x,y,asp=1,xaxs="i",yaxs="i");abline(0,1)
> #diagonal line misses corners
> 
> plot(x,y,xaxs="i",yaxs="i");abline(0,1)
> #not square and diag misses corners
> 
> plot(x,y,xlim=lims,ylim=lims,xaxs="i",yaxs="i");abline(0,1)
> #not square
> 
> plot(x,y,asp=1,xlim=lims,ylim=lims,xaxs="i",yaxs="i");abline(0,1)
> #not square (plotting region about 8cm by 9.5cm)
> 
> 
> 
> If I wrap the above lines in
> 
> postscript(file="foo.ps", width=5,height=5)
> [...snip...]
> dev.off()
> 
> then still none of the plots is exactly right [either one or both
> corners are missed, or the aspect ratio off].  What am I missing?
> 
> 
> 
> 
> 

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list