[R] how to control ticks in plots with yasp or xasp

Marc Schwartz MSchwartz at mn.rr.com
Sat Oct 8 17:58:49 CEST 2005


On Sat, 2005-10-08 at 16:37 +0100, Prof Brian Ripley wrote:
> On Sat, 8 Oct 2005, Marc Schwartz wrote:
> 
> > On Sat, 2005-10-08 at 09:28 -0400, Denis Chabot wrote:
> >> Hi,
> >>
> >> A few times I tried to control the number and position of tick marks
> >> in plots with the yasp or xasp parameters. For example, a y axis was
> >> drawn by default with tick marks at 0, 20, 40, 80 and 100. I tried to
> >> get tick marks every 10 by adding
> >>
> >> yasp=(0, 100, 10)
> >>
> >> but this had no effect at all. I know I can draw the axis and tick
> >> marks manually, but often this simple option would suffice if I could
> >> understand how to make it work.
> >>
> >> Thanks in advance,
> >>
> >> Denis Chabot
> >
> >
> > I suspect that one problem you are having is that there is no
> > par("xasp") or par("yasp")....unless these are typos and you are trying
> > to use par("xaxp") and par("yaxp")?
> 
> In any case, (0, 100, 10) is invalid syntax, and c(0, 100, 10) is needed.

Indeed.

> > There is an 'asp' argument to some of the plot functions (ie.
> > plot.default), but this has a different intention.
> >
> > par("xaxp") and par("yaxp") are not listed as read only pars in ?par,
> > however, I cannot recall an instance where R does not overwrite the user
> > settings during the calculation of the axes, whether passed as arguments
> > to a plot function or set a priori via a par() call.
> 
> Really?  Try
> 
> > plot(1:100, xaxt="n")
> > par(xaxp=c(0, 50, 5))  # the value is reset at each plot
> > axis(1)
> 
> for how it works (but not inline, which is probably a bug).

Ah....I had not thought about that 'par'ticular combination...  ;-)

Hence, not R.O.  So it must be used _after_ a plot call, which makes
sense.

I had reached for my copy of Paul's book and on page 96 (last paragraph
in section 3.4.5 on Axes), he suggests using the approach I elucidate
below with axTicks(). I thought he might have some other ideas and that
I was missing something. This is also referenced on page 70, third
paragraph in section 3.2.5 on Axes.

> > If you want explicit control over the tick marks, you will need to use
> > axis(), perhaps in combination with axTicks(), after using 'xaxt = "n"'
> > and/or 'yaxt = "n"' in the plot call, depending upon the circumstances.
> 
> That is usually as easy.

Agreed.

Thanks,

Marc




More information about the R-help mailing list