\Header{axTicks}{Compute Axis Tickmark Locations}
\keyword{dplot}{axTicks}
\begin{Description}\relax
Compute pretty tickmark locations, the same way as \R{} does internally.
This is only non-trivial when \bold{log} coordinates are active.
By default, gives the \code{at} values which
\code{\Link{axis}(side)} would use.
\end{Description}
\begin{Usage}
\begin{verbatim}
axTicks(side, axp = NULL, usr = NULL, log = NULL)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{side}] integer in 1:4, as for \code{\Link{axis}}.
\item[\code{axp}] numeric vector of length three, defaulting to
\code{\Link{par}("Zaxp")} where \dQuote{Z} is \dQuote{x} or
\dQuote{y} depending on the \code{side} argument.
\item[\code{usr}] numeric vector of length four, defaulting to
\code{\Link{par}("usr")} giving horizontal (\sQuote{x}) and vertical
(\sQuote{y}) user coordinate limits.
\item[\code{log}] logical indicating if log coordinates are active; defaults
to \code{\Link{par}("Zlog")} where \sQuote{Z} is as for the
\code{axp} argument above.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The \code{axp}, \code{usr}, and \code{log} arguments must be consistent
as their default values (the \code{par(..)} results) are.  If you
specify all three (as non-NULL), the graphics environment is not used
at all.  Note that the meaning of \code{axp} alters very much when \code{log}
is \code{TRUE}, see the documentation on \code{\Link{par}(xaxp=.)}.

\code{axTicks()} can be regarded as an \R{} implementation  of the
C function \code{CreateAtVector()} in \file{..../src/main/plot.c}
which is called by \code{\Link{axis}(side,*)} when no argument
\code{at} is specified.
\end{Details}
\begin{Value}
numeric vector of coordinate values at which axis tickmarks can be
drawn.  By default, when only the first argument is specified,
these values should be identical to those that
\code{\Link{axis}(side)} would use or has used.
\end{Value}
\begin{SeeAlso}\relax
\code{\Link{axis}}, \code{\Link{par}}.  \code{\Link{pretty}}
uses the same algorithm (but independently of the graphics
environment) and has more options.  However it is not available for
\code{log = TRUE.}
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
 plot(1:7, 10*21:27)
 axTicks(1)
 axTicks(2)
 stopifnot(identical(axTicks(1), axTicks(3)),
           identical(axTicks(2), axTicks(4)))

## Show how axTicks() and axis() correspond :
op <- par(mfrow = c(3,1))
for(x in 9999*c(1,2,8)) {
    plot(x,9, log = "x")
    cat(formatC(par("xaxp"),wid=5),";",T <- axTicks(1),"\n")
    rug(T, col="red")
}
par(op)
\end{ExampleCode}
\end{Examples}

