Learn R Programming

sfsmisc (version 1.0-24)

eaxis: Extended / Engineering Axis for Graphics

Description

An extended axis() function which labels more prettily, in particular for log-scale axes.

It makes use of plotmath expressions of the form $k \times 10^k$ for labeling a log-scaled axis and when otherwise exponentional formatting would be used.

Usage

eaxis(side, at =,      labels = NULL, log = NULL,
      f.smalltcl = 3/5, at.small = NULL, small.mult = NULL,
      small.args = list(),
      draw.between.ticks = TRUE, between.max = 4,
      outer.at = TRUE, drop.1 = TRUE, las = 1,
      nintLog = max(10, par("lab")[2 - is.x]), max.at = Inf, ...)

Arguments

side
integer in 1:4, specifying side of axis.
at
numeric vector of (normalsized) tick locations; by default axTicks(side, ..), i.e., the same as axis() would use.
labels
NULL (default), logical, character or expression, as in axis(); in addition, if NA, labels = T
log
logical or NULL specifying if log-scale should be used; the default depends on the current plot's axis.
f.smalltcl
factor specifying the lengths of the small ticks in proportion to the normalsized, labeled ticks.
at.small
locations of small ticks; the default, NULL, uses small.mult and constructs smart locations.
small.mult
positive integer (or NULL), used when at.small is NULL to indicate which multiples of at (typically axTicks()) should be used as small ticks
small.args
optional list of further arguments to the axis() call which draws the small ticks.
draw.between.ticks
(only if log is true): logical indicating that possible (non-small) ticks between the labeled (via at) ones should be drawn as well (and possibly also used for at.small construction), see also betwe
between.max
(only if log and draw.between.ticks are true): integer indicating ticks should be drawn (approximately) between the labeled ones.
outer.at
logical specifying that at.small should also be constructed outside the at range, but still inside the corresponding par("usr").
drop.1
logical specifying if "1 *" should be dropped from labels, passed to pretty10exp().
nintLog
only used in R> 2.13.x, when log is true: approximate (lower bound on) number of intervals for log scaling.
max.at
maximal number of at values to be used effectively. If you don't specify at yourself carefully, it is recommended to set this to something like 25, but this is not the default, for back compatibility rea
las, ...
arguments passed to (the first) axis call. Note that the default las = 1 differs from axis's default las = 0.

See Also

axis, axTicks, axTexpr, pretty10exp.

Examples

Run this code
x <- lseq(1e-10, 0.1, length = 201)
plot(x, pt(x, df=3), type = "l", xaxt = "n", log = "x")
eaxis(1)
## without small ticks:
eaxis(3, at.small=FALSE, col="blue")

## If you like the ticks, but prefer traditional (non-"plotmath") labels:
plot(x,  gamma(x),   type = "l", log = "x")
eaxis(1, labels=NA)

x <- lseq(.001, 0.1, length = 1000)
plot(x, sin(1/x)*x, type = "l", xaxt = "n", log = "x")
eaxis(1)

## non- log-scale : draw small ticks, but no "10^k" if not needed:
x <- seq(-100, 100, length = 1000)
plot(x, sin(x)/x, type = "l", xaxt = "n")
eaxis(1)

x <- seq(-1, 1, length = 1000)
plot(x, sin(x)/x, type = "l", xaxt = "n")
eaxis(1, small.args = list(col="blue"))

x <- x/1000
plot(x, 1-sin(x)/x, type = "l", xaxt = "n", yaxt = "n")
eaxis(1)
eaxis(2)
## more labels than default:
op <- par(lab=c(10,5,7))
plot(x, sin(x)/x, type = "l", xaxt = "n")
eaxis(1) # maybe (depending on your canvas), there are too many,
## in that case, maybe use
plot(x, sin(x)/x, type = "l", xaxt = "n")
eaxis(1, axTicks(1)[c(TRUE,FALSE)]) # drop every 2nd label
eaxis(3, labels=FALSE)

## ore use 'max.at' which thins as well:
plot(x, sin(x)/x, type = "l", xaxt = "n")
eaxis(1, max.at=6)
par(op)
## From R version 2.14.0, on, this looks better

### Answering R-help "How do I show real values on a log10 histogram", 26 Mar 2013
## the data:
       set.seed(1); summary(x <- rlnorm(100, m = 2, sdl = 3))
## the plot (w/o  x-axis) :
       r <- hist(log10(x), xaxt = "n", xlab = "x [log scale]")
## the nice axis:
       axt <- axTicks(1)
       eaxis(1, at = axt, labels = pretty10exp(10^axt, drop.1=TRUE))

Run the code above in your browser using DataLab