Learn R Programming

sfsmisc (version 1.0-29)

pretty10exp: Nice 10 ** k Label Expressions

Description

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

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 (n
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.typ
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
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)

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

stopifnot(identical(pretty10exp(numeric(0)), expression()))
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