Re: [R] asp and ylim

From: David Epstein <>
Date: Mon, 21 Jul 2008 09:42:35 +0100

Maybe what I am missing is how to set the "device region" mentioned in Brian's email. I have tried various searches, but I haven't had any luck in finding a reference to "device region". However, I'm not sure that changing the device region will help if one stays with plot (), because the default seems to be that the physical plot region is approximately square, and I haven't found a way to control the size of the physical plot region. The help files for eqscplot() and xyplot () indicate that they are meant for scatter plots. But lots of plots are not scatter plots. I was only using a scatter plot because Rolf's code did so, and he thought I could do what I wanted inside plot(), which I can't at the moment.

Perhaps the best solution is to live with plot() as it is. If I need the picture for a paper, I will export data to Matlab or Mathematica or Illustrator, where I can get the control I want.

Thanks for all your help.

On 20 Jul, 2008, at 23:14, Prof Brian Ripley wrote:

> Take a look at eqscplot() in package MASS for a different approach.
> You last para forgets that once you have set the device region and
> the margins the physical plot region and hence its aspect ratio is
> determined -- see the figures in 'An Introduction to R'.
> On Sun, 20 Jul 2008, David Epstein wrote:
>> #See David Williams' book "Weighing the odds", p286
>> y <- c(1.21, 0.51, 0.14, 1.62, -0.8,
>> 0.72, -1.71, 0.84, 0.02, -0.12)
>> ybar <- mean(y)
>> ylength <- length(y)
>> ybarv <- rep(ybar, ylength)
>> x <- 1:ylength
>> plot(x,y,asp=1,xlab="position",ylab="ybar",type="n",ylim=c(-1,1))
>> segments(x[1], ybar, x[ylength], ybar)
>> segments(x,ybarv,x,y)
>> points(x, ybarv, pch=21, bg="white")
>> points(x,y,pch=19,col="black")
>> With asp=1, the value of ylim seems to be totally ignored, as in
>> the above code. With asp not set, R plays close attention to the
>> value of ylim. This is not intuitive behaviour, or is it?
>> How can I set the aspect ratio, and simultaneously set the plot
>> region? The aspect ratio is one number and the plot region is
>> given by four numbers (xleft, xright, yleft, yright). Logically,
>> these 5 numbers are independent of each other and arbitrary,
>> provided xleft<xright and yleft<yright. This should give a one-to-
>> one bijection between 5-tuples and plots, determined up to a
>> change of scale that is uniform in the x- and y-dirctions. My code
>> above shows the (to me) obvious attempt, which fails.
>> Thanks
>> David
>> ______________________________________________
>> mailing list
>> PLEASE do read the posting guide
>> guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> --
> Brian D. Ripley,
> Professor of Applied Statistics,
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272866 (PA)
> Oxford OX1 3TG, UK Fax: +44 1865 272595 mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Mon 21 Jul 2008 - 08:45:44 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Mon 21 Jul 2008 - 10:32:03 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive