stat_fmt_tb
selects, reorders and/or renames columns and
or rows of a tibble nested in data
. It can also apply user supplied
functions to data columns. This stat is intended to be used to pre-process
tibble
objects mapped to the label
aesthetic before adding
them to a plot with geom_table
.
Usage
stat_fmt_tb(
mapping = NULL,
data = NULL,
geom = "table",
tb.vars = NULL,
tb.rows = NULL,
tb.funs = list(),
digits = 3,
position = "identity",
table.theme = NULL,
table.rownames = FALSE,
table.colnames = TRUE,
table.hjust = 0.5,
parse = FALSE,
na.rm = FALSE,
show.legend = FALSE,
inherit.aes = TRUE,
...
)
Arguments
- mapping
The aesthetic mapping, usually constructed with
aes
oraes_
. Only needs to be set at the layer level if you are overriding the plot defaults.- data
A layer specific dataset - only needed if you want to override the plot defaults.
- geom
The geometric object to use display the data
- tb.vars, tb.rows
character or numeric vectors, optionally named, used to select and/or rename the columns or rows in the table returned.
- tb.funs
named list of functions to be applied to
data
columns.- digits
integer indicating the number of significant digits to be retained in data. Use
digits = Inf
to skip.- position
The position adjustment to use for overlapping points on this layer
- table.theme
NULL, list or function A 'gridExtra'
ttheme
definition, or a constructor for attheme
orNULL
for default.- table.rownames, table.colnames
logical flag to enable or disabling printing of row names and column names.
- table.hjust
numeric Horizontal justification for the core and column headings of the table.
- parse
If
TRUE
, the labels will be parsed into expressions and displayed as described in?plotmath
.- na.rm
a logical indicating whether
NA
values should be stripped before the computation proceeds.- show.legend
logical. Should this layer be included in the legends?
NA
, the default, includes if any aesthetics are mapped.FALSE
never includes, andTRUE
always includes.- inherit.aes
If
FALSE
, overrides the default aesthetics, rather than combining with them. This is most useful for helper functions that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g.borders
.- ...
other arguments passed on to
layer
. This can include aesthetics whose values you want to set, not map. Seelayer
for more details.
Value
A plot layer instance. Using as output data
a copy of the
input data
in which the data frames mapped to label
have been
modified.
Details
One or more functions to be applied can be passed in a named list to parameter `tb.funs`. Functions are matched by name to columns, after column selection and renaming have been applied.
Computed variables
The output of sequentially applying
slice
with tb.rows
as argument and
select
with tb.vars
to a list variable
list mapped to label
and containing a single tibble per row
in data
.
See also
See geom_table
for details on how tables respond
to mapped aesthetics and table themes. For details on predefined table
themes see ttheme_gtdefault
.
Examples
my.df <-
tibble::tibble(
x = c(1, 2),
y = c(0, 4),
group = c("A", "B"),
tbs = list(a = tibble::tibble(Xa = 1:6, Y = rep(c("x", "y"), 3)),
b = tibble::tibble(Xb = 1:3, Y = "x"))
)
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb() +
expand_limits(x = c(0,3), y = c(-2, 6))
# Hide column names, diplay row names
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb(table.colnames = FALSE,
table.rownames = TRUE) +
expand_limits(x = c(0,3), y = c(-2, 6))
# Use a theme for the table
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb(table.theme = ttheme_gtlight) +
expand_limits(x = c(0,3), y = c(-2, 6))
# selection and renaming by column position
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb(tb.vars = c(value = 1, group = 2),
tb.rows = 1:3) +
expand_limits(x = c(0,3), y = c(-2, 6))
# apply functions to columns
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb(tb.vars = c(value = 1, group = 2),
tb.rows = 1:3,
tb.funs = list(group = function(x) {sprintf("italic(%s)", x)},
value = function(x) {ifelse(x > 2, "bold(zz)", x)}),
parse = TRUE) +
expand_limits(x = c(0,3), y = c(-2, 6))
# selection, reordering and renaming by column position
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb(tb.vars = c(group = 2, value = 1),
tb.rows = 1:3) +
expand_limits(x = c(0,3), y = c(-2, 6))
# selection and renaming, using partial matching to column name
ggplot(my.df, aes(x, y, label = tbs)) +
stat_fmt_tb(tb.vars = c(value = "X", group = "Y"),
tb.rows = 1:3) +
expand_limits(x = c(0,3), y = c(-2, 6))