Extended / Engineering Axis for Graphics
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 * 10^k for labeling a
log-scaled axis and when otherwise exponential formatting would be
used (see pretty10exp
).
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(10, par("lab")[2 - is.x]), axp = NULL, n.axp = NULL, max.at = Inf, lab.type = "plotmath", lab.sep = "cdot", ...)
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 1 * should be dropped
from labels, passed to |
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 |
Martin Maechler
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)))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.