gen_grob | R Documentation |
It uses Grid Graphics (package grid
) to Convert a flextable
into a grob object with scaling and text wrapping capabilities.
This method can be used to insert a flextable inside a ggplot2
plot,
it can also be used with package 'patchwork' or 'cowplot' to combine
ggplots and flextables into the same graphic.
User can vary the size of the elements according to the size of the graphic window. The text behavior is controllable, user can decide to make the paragraphs (texts and images) distribute themselves correctly in the available space of the cell. It is possible to define resizing options, for example by using only the width, or by distributing the content so that it occupies the whole graphic space. It is also possible to freeze or not the size of the columns.
It is not recommended to use this function for large tables because the calculations can be long.
Limitations: equations (see as_equation()
) and hyperlinks (see officer::hyperlink_ftext()
)
will not be displayed.
gen_grob(
x,
...,
fit = c("auto", "width", "fixed"),
scaling = c("min", "full", "fixed"),
wrapping = TRUE,
autowidths = TRUE,
just = NULL
)
x |
A flextable object |
... |
Reserved for extra arguments |
fit |
Determines the fitting/scaling of the grob on its parent viewport.
One of
|
scaling |
Determines the scaling of the table contents.
One of
|
wrapping |
Determines the soft wrapping (line breaking) method
for the table cell contents. One of
Superscript and subscript chunks do not wrap. Newline and tab characters are removed from these chunk types. |
autowidths |
If |
just |
Justification of viewport layout,
same as |
a grob (gTree) object made with package grid
The size of the flextable can be known by using the method dim on the grob.
It's important to note that captions are not part of the table itself. This means when exporting a table to PNG or SVG formats (image formats), the caption won't be included. Captions are intended for document outputs like Word, HTML, or PDF, where tables are embedded within the document itself.
Other flextable print function:
as_raster()
,
df_printer()
,
flextable_to_rmd()
,
htmltools_value()
,
knit_print.flextable()
,
plot.flextable()
,
print.flextable()
,
save_as_docx()
,
save_as_html()
,
save_as_image()
,
save_as_pptx()
,
save_as_rtf()
,
to_html.flextable()
library(ragg)
library(gdtools)
register_liberationsans()
set_flextable_defaults(font.family = "Liberation Sans")
ft <- flextable(head(mtcars))
gr <- gen_grob(ft)
png_f_1 <- tempfile(fileext = ".png")
ragg::agg_png(
filename = png_f_1, width = 4, height = 2,
units = "in", res = 150)
plot(gr)
dev.off()
png_f_2 <- tempfile(fileext = ".png")
# get the size
dims <- dim(gr)
dims
ragg::agg_png(
filename = png_f_2, width = dims$width + .1,
height = dims$height + .1, units = "in", res = 150
)
plot(gr)
dev.off()
if (require("ggplot2")) {
png_f_3 <- tempfile(fileext = ".png")
z <- summarizor(iris, by = "Species") |>
as_flextable(spread_first_col = TRUE) |>
color(color = "gray", part = "all")
gg <- ggplot(data = iris, aes(Sepal.Length, Petal.Width)) +
annotation_custom(
gen_grob(z, scaling = "full"),
xmin = 4.5, xmax = 7.5, ymin = 0.25, ymax = 2.25) +
geom_point() +
theme_minimal()
ragg::agg_png(
filename = png_f_3, width = 7,
height = 7, units = "in", res = 150
)
print(gg)
dev.off()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.