sfsmisc (version 1.1-4)

pretty10exp: Nice 10 ** k Label Expressions

Description

Produce nice \(a \times 10^k\) expressions to be used instead of the scientific notation "a E<k>".

Usage

pretty10exp(x, drop.1 = FALSE, sub10 = FALSE, digits = 7, digits.fuzz,
            lab.type = c("plotmath","latex"),
            lab.sep = c("cdot", "times"))

Arguments

x

numeric vector (e.g. axis tick locations)

drop.1

logical indicating if \(1 \times\) should be dropped from the resulting expressions.

sub10

logical, "10", a non-negative integer number or an integer vector of length two, say \((k_1,k_2)\), indicating if some \(10^j\) expressions for \(j \in J\) should be formatted traditionally, notably e.g., \(10^0 \equiv 1\). When a (non-negative) number, say \(k\), \(J = \{j; j \le k\}\) are all simplified, when a length--2 vector, \(J = \{j; k_1 \le j \le k_2\}\) are.

Special cases: sub10 = TRUE means to use \(1\) instead of \(10^0\) and sub10 = "10" uses both \(1\) for \(10^0\) and \(10\) for \(10^1\); these are short forms of sub10 = c(0,0) and sub10 = c(0,1) respectively.

digits

number of digits for mantissa (\(a\)) construction; the number of significant digits, see signif.

digits.fuzz

the old deprecated name for digits.

lab.type

a string indicating how the result should look like. By default, (plotmath-compatible) expressions are returned. Alternatively, lab.type = "plotmath" returns LaTeX formatted strings for labels. (The latter is useful, e.g., when using the tikzDevice package to generate LaTeX-processed figures.)

lab.sep

character separator between mantissa and exponent for LaTeX labels; it will be prepended with a backslash, i.e., ‘"cdot"’ will use ‘"\cdot"’

Value

For the default lab.type = "plotmath", an expression of the same length as x, typically with elements of the form a %*% 10 ^ k. Exceptions are 0 which is kept simple, if drop.1 is true and \(a = 1\), 10 ^ k is used, and if sub10 is not false, a %*% 10 ^ 0 as a, and a %*% 10 ^ k as as the corresponding formatted number a * 10^k independently of drop.1.

Otherwise, a character vector of the same length as x. For lab.type = "latex", currently the only alternative to the default, these strings are LaTeX (math mode) compatible strings.

See Also

axTexpr and eaxis() which build on pretty10exp(), notably the eaxis() example plots.

The new toLatex.numeric method which gives very similar results with option scientific = TRUE. Further, axis, axTicks.

Examples

Run this code
# NOT RUN {
pretty10exp(-1:3 * 1000)
pretty10exp(-1:3 * 1000, drop.1 = TRUE)
pretty10exp(c(1,2,5,10,20,50,100,200) * 1e3)
pretty10exp(c(1,2,5,10,20,50,100,200) * 1e3, drop.1 = TRUE)

set.seed(17); lx <- rlnorm(10, m=8, s=6)
pretty10exp(lx, digits = 3)
pretty10exp(lx, digits = 3, sub10 = 2)

pretty10exp(lx, digits = 3, lab.type="latex")
pretty10exp(lx, digits = 3, lab.type="latex", lab.sep="times", sub10=2)

## use regular formatted numbers from 0.03 to 300 :
pretty10exp(3*10^(-3:4), sub10 = c(-2,2))
pretty10exp(3*10^(-3:4), sub10 = c(-2,2), lab.type = "l")

# }
# NOT RUN {
ax <- 10^(-6:0) - 2e-16
pretty10exp(ax, drop.1=TRUE) # nice for plotting
pretty10exp(ax, drop.1=TRUE, sub10=TRUE)
pretty10exp(ax, drop.1=TRUE, sub10=c(-2,2))

## in sfsmisc version <= 1.0-16, no 'digits',
## i.e., implicitly had  digits := #{double precision digits} ==
(dig. <- .Machine$double.digits * log10(2)) # 15.95
pretty10exp(ax, drop.1=TRUE, digits= dig.)  # ''ugly''
# }

Run the code above in your browser using DataLab