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.
David

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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting- guide.html
and provide commented, minimal, self-contained, reproducible code.

--
Brian D. Ripley,                  [EMAIL PROTECTED]
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

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to