Insert images and inline plots into tinytable objects
Source:R/plot_tt.R, R/zzz-aliases.R
plot_tt.RdThe plot_tt() function allows for the insertion of images and inline plots into
tinytable objects. This function can handle both local and web-based images.
Usage
plot_tt(
x,
i = NULL,
j = NULL,
fun = NULL,
data = NULL,
color = "black",
xlim = NULL,
height = 1,
height_plot = 400,
width_plot = 1200,
images = NULL,
sprintf = "%s",
assets = "tinytable_assets",
...
)
tt_plot(
x,
i = NULL,
j = NULL,
fun = NULL,
data = NULL,
color = "black",
xlim = NULL,
height = 1,
height_plot = 400,
width_plot = 1200,
images = NULL,
sprintf = "%s",
assets = "tinytable_assets",
...
)Arguments
- x
A tinytable object.
- i
Integer vector, the row indices where images are to be inserted. If
NULL, images will be inserted in all rows.- j
Integer vector, the column indices where images are to be inserted. If
NULL, images will be inserted in all columns.- fun
String or function to generate inline plots.
Built-in plot types (strings):
"histogram": Creates histograms from numeric vectors. Acceptscolorargument."density": Creates density plots from numeric vectors. Acceptscolorargument."bar": Creates horizontal bar charts from single numeric values. Acceptscolor(single value, or length-2 vector for bar and background colors in static formats) andxlimarguments."line": Creates line plots from data frames withxandycolumns. Acceptscolorandxlimarguments.
Custom functions:
Functions that return
ggplot2objects.Functions that return another function which generates a base
Rplot, ex:function(x) {function() hist(x)}Note: When using custom ggplot2 functions that return plots with text elements, the text size will normally need to be adjusted because the plot is inserted as a very small image in the table. Text sizes of 1 or smaller often work well (e.g.,
theme(text = element_text(size = 1))).
See the tutorial on the
tinytablewebsite for more information.
- data
a list of data frames or vectors to be used by the plotting functions in
fun.- color
string Name of color to use for inline plots (passed to the
colargument basegraphicsplots inR). For bar plots in static output formats (PNG, PDF, etc.), can be a vector of length 2: c(bar_color, background_color) to show progress against a maximum. Note: Tabulator format only uses the first color.- xlim
Numeric vector of length 2. Controls the range of bar plots.
- height
Numeric, the height of the images in the table in em units.
- height_plot
Numeric, the height of generated plot images in pixels (default: 400).
- width_plot
Numeric, the width of generated plot images in pixels (default: 1200).
- images
Character vector, the paths to the images to be inserted. Paths are relative to the main table file or Quarto (Rmarkdown) document.
- sprintf
Character string, a sprintf format string to format the generated cell content. Default is "%s" which displays the content as-is. Use this to wrap images or plots in custom markup.
- assets
Path to the directory where generated assets are stored. This path is relative to the location where a table is saved.
- ...
Extra arguments are passed to the function in
fun. Important: Custom plotting functions must always have...as an argument.
Examples
if (FALSE) { # \dontrun{
# Bar plots with single and dual colors
dat <- data.frame(
Metric = c("Sales", "Conversion", "Growth", "Efficiency"),
Value = c(75, 45, 92, 38),
Percentage = c(0.75, 0.45, 0.92, 0.38)
)
tt(dat) |>
plot_tt(j = 2, fun = "bar", data = as.list(dat$Value), color = "darkorange") |>
plot_tt(j = 3, fun = "bar", data = as.list(dat$Percentage),
color = c("steelblue", "lightgrey"), xlim = c(0, 1))
# Built-in plot types
plot_data <- list(mtcars$mpg, mtcars$hp, mtcars$qsec)
dat <- data.frame(
Variables = c("mpg", "hp", "qsec"),
Histogram = "",
Density = "",
Line = ""
)
# Random data for sparklines
lines <- lapply(1:3, \(x) data.frame(x = 1:10, y = rnorm(10)))
tt(dat) |>
plot_tt(j = 2, fun = "histogram", data = plot_data) |>
plot_tt(j = 3, fun = "density", data = plot_data, color = "darkgreen") |>
plot_tt(j = 4, fun = "line", data = lines, color = "blue") |>
style_tt(j = 2:4, align = "c")
# Custom function example (must have ... argument)
custom_hist <- function(d, ...) {
function() hist(d, axes = FALSE, ann = FALSE, col = "lightblue")
}
tt(data.frame(Variables = "mpg", Histogram = "")) |>
plot_tt(j = 2, fun = custom_hist, data = list(mtcars$mpg))
} # }