[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