[R] R-Graphics: Scaling axis

ripley@stats.ox.ac.uk ripley at stats.ox.ac.uk
Wed Mar 12 08:15:30 CET 2003


Excuse me, but that is not `how you do it'. R has two automated ways. One
is the parameter `asp': see ?plot.window, and the other is the function 
eqscplot() in package MASS.  Neither need manual intervention (unless your 
output device cannot plot square pixels as square).

We need to be a bit careful about the length of axes: if x ranges from 1
to 10, the x axis does not (unless you set xaxs="i").  That's why setting
the plot region (e.g. using par(pty="s") or via the margins) often does
not do what one wants: the plot region may be square but the scales 
unequal.

On Tue, 11 Mar 2003, Thomas W Blackwell wrote:

> On Wed, 12 Mar 2003, Till Baumgaertel wrote:
> 
> > how can I scale the x- and y-axis of a "plot" to the same scale?
> >
> > My problem: The following command sequence produces the plot in a square.
> > What I want is the x-axis to be 5 times as wide (measured e.g. in pixels)
> > as the y-axis is long (because y ranges from -1 to 1 and x ranges from 0
> > to 10).
> 
> It depends what graphics device you are using.  If the plot is in
> a window on the computer screen, then resizing the window reshapes
> the plot to whatever aspect ratio you want, interactively, so the
> aspect ratio is not an issue.  

It *is* an issue for many statistical plots which rely on interpretation
via Euclidean distance, e.g. MDS plots.  One wants to resize and keep the 
aspect ratio: hence the parameter `asp', and the different resizing 
options on the Windows graphics device.

> For a hardcopy device, such as
> postscript(), the traditional way to control the aspect ratio is
> to fill up the rest of the page with margins.  For a nice, long
> narrow plot ...
> 
> postscript("some.file.name", pointsize=11, horizontal=T)
> par(mar=c(9.5,3.5,3,2), las=1)
> plot(x, y, type="p")
> 
> 	... but after printing one test page, I always take a ruler
> and measure the spacing of the tick marks and calculate how to
> adjust the margin widths better.  Seriously.  I use a ruler.
> It's clunky, but if you care about the graphical scales, that's
> how you do it, and no complaints.  Even the difference between "A4"
> and "letter" paper sizes would throw off any automated calculation.

Not so.  The size of the plot region in inches is available from the 
graphics parameters, specifically par("pin").

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