R: Compute Axis Tickmark Locations

axTicks {graphics} | R Documentation

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

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

### See Also

`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

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

[Package graphics version 3.5.1 Index]