eaxis {sfsmisc} | R Documentation |
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 or (LaTeX) expression
s of
the form k \times 10^k
for labeling a
log-scaled axis and when otherwise exponential formatting would be
used (see pretty10exp
).
Usage
eaxis(side, at = if(log) axTicks(side, axp=axp, log=log, nintLog=nintLog)
else axTicks(side, axp=axp, log=log),
labels = NULL, log = NULL,
use.expr = log || format.info(as.numeric(at), digits=7)[3] > 0,
f.smalltcl = 3/5, at.small = NULL, small.mult = NULL, equidist.at.tol = 0.002,
small.args = list(),
draw.between.ticks = TRUE, between.max = 4,
outer.at = TRUE, drop.1 = TRUE, sub10 = FALSE, las = 1,
nintLog = max(12, par("lab")[2 - is.x]),
axp = NULL, n.axp = NULL, max.at = Inf,
lab.type = "plotmath", lab.sep = "cdot",
...)
Arguments
side |
integer in 1:4, specifying side of |
at |
numeric vector of (“normalsized”) tick locations; by
default |
labels |
|
log |
logical or |
use.expr |
logical specifying if |
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,
|
small.mult |
positive integer (or |
equidist.at.tol |
a small positive number, a tolerance to be used
for checking equidistant |
small.args |
optional |
draw.between.ticks |
(only if |
between.max |
(only if |
outer.at |
logical specifying that |
drop.1 |
logical specifying if |
sub10 |
logical, integer (of length 1 or 2) or |
nintLog |
only used in R > 2.13.x, when |
axp |
to be passed to |
n.axp |
to be set to
see |
max.at |
maximal number of |
las , ... |
arguments passed to (the first) |
lab.type |
string, passed to |
lab.sep |
separator between mantissa and exponent for LaTeX labels,
see |
Author(s)
Martin Maechler
See Also
axis
,
axTicks
,
axTexpr
,
pretty10exp
.
Examples
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)
eaxis(3, n.axp = 1)# -> xaxp[3] = 1: only 10^j (main) ticks
## 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) # default -> {1, 2, 5} * 10^j ticks
eaxis(3, n.axp = 2)# -> xaxp[3] := 2 -- approximately two (main) ticks
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)
### 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))
## Additionally demo'ing 'sub10' options:
plot(r, xaxt="n")
eaxis(1, at = axt, labels = pretty10exp(10^axt, drop.1=TRUE, sub10 = 2))
## or
plot(r, xaxt="n")
eaxis(1, at = axt, labels = pretty10exp(10^axt, drop.1=TRUE, sub10 = "10"))
## or
plot(r, xaxt="n")
eaxis(1, at = axt, labels = pretty10exp(10^axt, drop.1=TRUE, sub10 = c(-2, 2)))