axTicks: Compute Axis Tickmark Locations

Description

Compute pretty tickmark locations, the same way as R does internally. This is only non-trivial when log coordinates are active. By default, gives the `at` values which `axis(side)` would use.

Usage

 `1` ```axTicks(side, axp = NULL, usr = NULL, log = NULL, nintLog = NULL) ```

Arguments

 `side` integer in 1:4, as for `axis`. `axp` numeric vector of length three, defaulting to `par("xaxp")` or `par("yaxp")` depending on the `side` argument (`par("xaxp")` if `side` is 1 or 3, `par("yaxp")` if side is 2 or 4). `usr` numeric vector of length two giving user coordinate limits, defaulting to the relevant portion of `par("usr")` (`par("usr")[1:2]` or `par("usr")[3:4]` for `side` in (1,3) or (2,4) respectively). `log` logical indicating if log coordinates are active; defaults to `par("xlog")` or `par("ylog")` depending on `side`. `nintLog` (only used when `log` is true): approximate (lower bound for the) number of tick intervals; defaults to `par("lab")[j]` where `j` is 1 or 2 depending on `side`. Set this to `Inf` if you want the same behavior as in earlier R versions (than 2.14.x).

Details

The `axp`, `usr`, and `log` arguments must be consistent as their default values (the `par(..)` results) are. If you specify all three (as non-NULL), the graphics environment is not used at all. Note that the meaning of `axp` differs significantly when `log` is `TRUE`; see the documentation on `par(xaxp = .)`.

`axTicks()` can be used an R interface to the C function `CreateAtVector()` in ‘..../src/main/plot.c’ which is called by `axis(side, *)` when no argument `at` is specified. The delicate case, `log = TRUE`, now makes use of `axisTicks` (in package grDevices) unless `nintLog = Inf` which exists for back compatibility.

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 `axis(side)` would use or has used. Note that the values are decreasing when `usr` is (“reverse axis” case).

`axis`, `par`. `pretty` uses the same algorithm (but independently of the graphics environment) and has more options. However it is not available for `log = TRUE.`

`axisTicks()` (package grDevices).

Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41``` ``` 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"), width = 5),";", T <- axTicks(1),"\n") rug(T, col = adjustcolor("red", 0.5), lwd = 4) } par(op) x <- 9.9*10^(-3:10) plot(x, 1:14, log = "x") axTicks(1) # now length 5, in R <= 2.13.x gave the following axTicks(1, nintLog = Inf) # rather too many ## An example using axTicks() without reference to an existing plot ## (copying R's internal procedures for setting axis ranges etc.), ## You do need to supply _all_ of axp, usr, log, nintLog ## standard logarithmic y axis labels ylims <- c(0.2, 88) get_axp <- function(x) 10^c(ceiling(x[1]), floor(x[2])) ## mimic par("yaxs") == "i" usr.i <- log10(ylims) (aT.i <- axTicks(side = 2, usr = usr.i, axp = c(get_axp(usr.i), n = 3), log = TRUE, nintLog = 5)) ## mimic (default) par("yaxs") == "r" usr.r <- extendrange(r = log10(ylims), f = 0.04) (aT.r <- axTicks(side = 2, usr = usr.r, axp = c(get_axp(usr.r), 3), log = TRUE, nintLog = 5)) ## Prove that we got it right : plot(0:1, ylims, log = "y", yaxs = "i") stopifnot(all.equal(aT.i, axTicks(side = 2))) plot(0:1, ylims, log = "y", yaxs = "r") stopifnot(all.equal(aT.r, axTicks(side = 2))) ```

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.