label_power10 | R Documentation |
Creates a labeller function that formats numbers in scientific notation using
power-of-10 R expressions (e.g., 2.5\times 10^3
or 5\times 10^6
). Useful for axis
labels in ggplot2 when dealing with large numbers or when you want to emphasize
the order of magnitude.
label_power10(
decimal.mark = NULL,
digits = 3,
scale = 1,
prefix = "",
suffix = "",
magnitude_only = FALSE,
...
)
decimal.mark |
Character used as decimal separator. If |
digits |
Number of significant digits to show in the mantissa. |
scale |
Scaling factor multiplied to the input values. Default is |
prefix |
Character string to prepend to each label. Default is |
suffix |
Character string to append to each label. Default is |
magnitude_only |
Logical. If |
... |
Additional arguments passed to |
The function converts numbers to scientific notation and then formats them as mathematical expressions using the R expression syntax:
For exponent 0: returns the mantissa as-is (e.g., 5.5
)
For exponent 1: it omits the exponent (e.g., 1.5\times 10
)
For other exponents: everything is shown (e.g., 1.5\times 10^3
)
When magnitude_only = TRUE
:
For exponent 0: returns 1
For exponent 1: returns 10
For other exponents (positive or negative): returns 10^{exponent}
The function handles negative numbers by preserving the sign and supports custom decimal marks, prefixes, and suffixes.
A label function that takes a numeric vector and returns an expression vector suitable for use as axis labels in ggplot2.
library(ggplot2)
# Basic usage with default settings
label_power10()(c(1000, 10000, 100000, -1000))
# Use in ggplot2
ggplot(
data.frame(x = 1:5, y = c(1, 50000, 75000, 100000, 200000)),
aes(x, y)
) +
geom_point() +
scale_y_continuous(labels = label_power10())
# Use in ggplot2 with options
ggplot(
data.frame(x = 1:5, y = c(1, 50000, 75000, 100000, 200000)),
aes(x, y)
) +
geom_point() +
scale_y_continuous(labels = label_power10(decimal.mark = ",", digits = 2, suffix = " CFU"))
# Magnitude only for cleaner labels with log scales
ggplot(
data.frame(x = 1:5, y = c(1000, 10000, 100000, 1000000, 10000000)),
aes(x, y)
) +
geom_point() +
scale_y_log10(labels = label_power10(magnitude_only = TRUE))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.