This document provides simple examples to illustrate the use of
gridify to add headers, footers and more to both figures
and tables.
We will cover the use of simple_layout(),
complex_layout(), pharma_layout_base(),
pharma_layout_A4() and pharma_layout_letter(),
and show how to add these layouts to ggplot2 figures, base
R figures, flextables, and gt tables.
gridify does not support rtables directly,
but we will demonstrate how users can implement gridify
with rtables by converting them to
flextables.
We can use gridify with both ggplot2
figures and base R figures.
ggplot2 FiguresWhen using the ggplot2 package in conjunction with pipes
(%>% or native |>), it’s important to
understand the precedence of operators to ensure your code works as
expected.
In R, the pipe operator (%>% or |>)
has a higher precedence than the addition operator (+) used
by ggplot2. This means that the %>% or
|> operator will be evaluated before the +
operator.
Because of this, if you’re piping into a ggplot2 call,
you need to wrap it in brackets () or {}. This
ensures that the entire ggplot2 call is evaluated first,
before the result is passed to the next function in the pipe.
Here’s an example:
# Load the necessary libraries
library(ggplot2)
# (to use |> version 4.1.0 of R is required, for lower versions we recommend %>% from magrittr)
library(magrittr)
# Create a scatter plot
mtcars %>%
{
ggplot2::ggplot(., aes(x = mpg, y = wt)) +
ggplot2::geom_point()
} %>%
print()Here we create a line plot of mpg against
wt using the mtcars dataset.
library(gridify)
fig_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()We then use the gridify() function to apply
simple_layout().
Next, we use the set_cell() function to add a title and
footer to our figure before printing it.
Here we create a line plot of mpg against
wt using the mtcars dataset.
We then use gridify() to apply
complex_layout().
g <- gridify(fig_obj, layout = complex_layout()) %>%
set_cell("header_left", "Left Header") %>%
set_cell("header_middle", "Middle Header") %>%
set_cell("header_right", "Right Header") %>%
set_cell("title", "Title") %>%
set_cell("subtitle", "Subtitle") %>%
set_cell("note", "Note") %>%
set_cell("footer_left", "Left Footer") %>%
set_cell("footer_middle", "Middle Footer") %>%
set_cell("footer_right", "Right Footer")
print(g)Pharma layout base, letter, and A4 are specific layouts for
pharmaceutical outputs provided by the gridify package.
They have identical predefined cells for headers, footers, titles,
subtitles, notes, watermarks, and references. Some of these cells are
set by default but can be overwritten.
Here we create a line plot of mpg against
wt using the mtcars dataset. We then use the
gridify() function to apply
pharma_layout_base().
figure_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()
g <- gridify(object = figure_obj, layout = pharma_layout_base()) %>%
set_cell("header_left_1", "Left Header 1") %>%
set_cell("header_left_2", "Left Header 2") %>%
set_cell("header_left_3", "Left Header 3") %>%
set_cell("header_right_1", "Right Header 1") %>%
set_cell("header_right_2", "Right Header 2") %>%
set_cell("header_right_3", "Right Header 3") %>%
set_cell("output_num", "Output") %>%
set_cell("title_1", "Title 1") %>%
set_cell("title_2", "Title 2") %>%
set_cell("title_3", "Title 3") %>%
set_cell("by_line", "By Line") %>%
set_cell("note", "Note") %>%
set_cell("references", "References") %>%
set_cell("footer_left", "Left Footer") %>%
set_cell("footer_right", "Right Footer") %>%
set_cell("watermark", "Watermark")
print(g)Here we apply pharma_layout_letter() with just the main
cells filled in.
figure_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()
g <- gridify(object = figure_obj, layout = pharma_layout_letter()) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "<PROJECT> / <INDICATION>") %>%
set_cell("header_left_3", "<STUDY>") %>%
set_cell("header_right_2", "<Draft or Final>") %>%
set_cell("output_num", "<Figure> xx.xx.xx") %>%
set_cell("title_1", "<Title 1>") %>%
set_cell("title_2", "<Title 2>") %>%
set_cell("note", "<Note or Footnotes>") %>%
set_cell("references", "<References:>") %>%
set_cell("footer_left", "Program: <PROGRAM NAME>, YYYY-MM-DD at HH:MM") %>%
set_cell("footer_right", "Page xx of nn") %>%
set_cell("watermark", "Draft")
print(g)Here we apply pharma_layout_A4() to the prior example.
Note the difference in the margin on the right for the A4 sized
output.
figure_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()
g <- gridify(object = figure_obj, layout = pharma_layout_A4()) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "<PROJECT> / <INDICATION>") %>%
set_cell("header_left_3", "<STUDY>") %>%
set_cell("header_right_2", "<Draft or Final>") %>%
set_cell("output_num", "<Figure> xx.xx.xx") %>%
set_cell("title_1", "<Title 1>") %>%
set_cell("title_2", "<Title 2>") %>%
set_cell("note", "<Note or Footnotes>") %>%
set_cell("references", "<References:>") %>%
set_cell("footer_left", "Program: <PROGRAM NAME>, YYYY-MM-DD at HH:MM") %>%
set_cell("footer_right", "Page xx of nn") %>%
set_cell("watermark", "Draft")
print(g)The gridify package can also be used with base R
figures. To use base R figures with gridify, we first
convert them to a formula using ~, before passing them to
gridify().
In this example, we create a simple base R bar plot and convert it to
a formula using ~.
Then we pass the formula to gridify() and apply
complex_layout().
g <- gridify(object = formula_object, layout = complex_layout()) %>%
set_cell("header_left", "Left Header") %>%
set_cell("header_middle", "Middle Header") %>%
set_cell("header_right", "Right Header") %>%
set_cell("title", "Title") %>%
set_cell("subtitle", "Subtitle") %>%
set_cell("note", "Note") %>%
set_cell("footer_left", "Left Footer") %>%
set_cell("footer_middle", "Middle Footer") %>%
set_cell("footer_right", "Right Footer")
#> Loading required namespace: gridGraphics
print(g)We can add text elements using all the previously mentioned layouts
to flextable and gt tables using
gridify. rtables objects are not directly
supported by gridify, but we can use gridify
with rtables by first converting them to
flextables.
flextableHere we create a flextable using the mtcars
dataset.
# (to use `gridify` with flextables we require the function `as_grob()` to convert flextables into grob
# objects, which exists in versions >= 0.8.0 of `flextable`)
library(flextable)
ft <- flextable::flextable(head(mtcars[1:10]))Then we pass the table to gridify() and apply
pharma_layout_letter().
g <- gridify(object = ft, layout = pharma_layout_letter()) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "<PROJECT> / <INDICATION>") %>%
set_cell("header_left_3", "<STUDY>") %>%
set_cell("header_right_2", "<Draft or Final>") %>%
set_cell("output_num", "<Table> xx.xx.xx") %>%
set_cell("title_1", "<Title 1>") %>%
set_cell("title_2", "<Title 2>") %>%
set_cell("note", "<Note or Footnotes>") %>%
set_cell("references", "<References:>") %>%
set_cell("footer_left", "Program: <PROGRAM NAME>, YYYY-MM-DD at HH:MM") %>%
set_cell("footer_right", "Page xx of nn") %>%
print(g)gt TableHere we create a gt table using the mtcars
dataset.
# (to use `gridify` with gt tables we require the function `as_gtable()` to convert gt tables into
# grob objects, which exists in versions >= 0.11.0 of `gt`)
library(gt)
gt_obj <- gt::gt(head(mtcars[1:10]))Then we pass the table to gridify() and apply
pharma_layout_letter().
g <- gridify(object = gt_obj, layout = pharma_layout_letter()) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "<PROJECT> / <INDICATION>") %>%
set_cell("header_left_3", "<STUDY>") %>%
set_cell("header_right_2", "<Draft or Final>") %>%
set_cell("output_num", "<Table> xx.xx.xx") %>%
set_cell("title_1", "<Title 1>") %>%
set_cell("title_2", "<Title 2>") %>%
set_cell("note", "<Note or Footnotes>") %>%
set_cell("references", "<References:>") %>%
set_cell("footer_left", "Program: <PROGRAM NAME>, YYYY-MM-DD at HH:MM") %>%
set_cell("footer_right", "Page xx of nn")
print(g)rtable via flextable
conversionWe will demonstrate how to use gridify with
rtables by converting the rtable to a
flextable and then modifying any aesthetics.
Here we build a simple rtable using the
iris dataset.
library(rtables)
rtabl <- rtables::basic_table(main_footer = " ") %>%
rtables::split_cols_by("Species") %>%
rtables::analyze(
c("Sepal.Length", "Sepal.Width", "Petal.Length"),
function(x, ...) {
rtables::in_rows(
"Mean (sd)" = c(mean(x), stats::sd(x)),
"Median" = median(x),
"Min - Max" = range(x),
.formats = c("xx.xx (xx.xx)", "xx.xx", "xx.xx - xx.xx")
)
}
) %>%
rtables::build_table(iris)Then we convert the rtable to a flextable
using the function tt_to_flextable() from the
rtables.officer package. We specify
theme = NULL to prevent the addition of borders which
tt_to_flextable() adds by default.
library(rtables.officer)
#> Loading required package: rlistings
#> Loading required package: tibble
ft <- rtables.officer::tt_to_flextable(rtabl, theme = NULL)Next we adjust some of the aesthetics of the
flextable.
Finally we pass the flextable to gridify()
and apply pharma_layout_A4(), before printing the
table.
g <- gridify(ft, layout = pharma_layout_A4()) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "PROJECT") %>%
set_cell("header_left_3", "STUDY") %>%
set_cell("header_right_1", "CONFIDENTIAL") %>%
set_cell("header_right_2", "Draft") %>%
set_cell("header_right_3", "Data Cut-off: 2000-01-01") %>%
set_cell("output_num", "<Table> xx.xx.xx") %>%
set_cell("title_1", "Summary Table for Iris Dataset") %>%
set_cell("note", "Note") %>%
set_cell("references", "References") %>%
set_cell("footer_left", sprintf("Program: My Programme, %s at %s", Sys.Date(), format(Sys.time(), "%H:%M"))) %>%
set_cell("footer_right", "Page 1 of 1") %>%
set_cell("watermark", "DRAFT")
print(g)show() MethodsWhen using gridify, we can utilize the
show() methods to find out information such as the cells
available in a gridify object or the specifications of a
layout object.
Here we take the earlier example where we applied
simple_layout() to a line plot.
fig_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()
g <- gridify(fig_obj, layout = simple_layout())To access the available cells in a gridify object, we
can use the show() method.
Alternatively, you can simply evaluate the object. This will display
the cells included in the applied layout, and whether or not they have
been filled by the gridify object.
g
#> gridifyClass object
#> ---------------------
#> Please run `show_spec(object)` or print the layout to get more specs.
#>
#> Cells:
#> title: empty
#> footer: emptyAs stated in the console output from the above example, we can use
show_spec(g) to gain further insight into the
specifications of g’s layout.
show_spec(g)
#> Layout dimensions:
#> Number of rows: 3
#> Number of columns: 1
#>
#> Heights of rows:
#> Row 1: 0 lines
#> Row 2: 1 null
#> Row 3: 0 lines
#>
#> Widths of columns:
#> Column 1: 1 npc
#>
#> Object Position:
#> Row: 2
#> Col: 1
#> Width: 1
#> Height: 1
#>
#> Object Row Heights:
#> Row 2: 1 null
#>
#> Margin:
#> Top: 0.1 npc
#> Right: 0.1 npc
#> Bottom: 0.1 npc
#> Left: 0.1 npc
#>
#> Global graphical parameters:
#> Are not set
#>
#> Background colour:
#> white
#>
#> Default Cell Info:
#> title:
#> row:1, col:1, text:NULL, mch:Inf, x:0.5, y:0.5, hjust:0.5, vjust:0.5, rot:0,
#> footer:
#> row:3, col:1, text:NULL, mch:Inf, x:0.5, y:0.5, hjust:0.5, vjust:0.5, rot:0,We can do the same with simple_layout() (and any other
layout) if we want to view its specs.
simple_layout()
#> gridifyLayout object
#> ---------------------
#> Layout dimensions:
#> Number of rows: 3
#> Number of columns: 1
#>
#> Heights of rows:
#> Row 1: 0 lines
#> Row 2: 1 null
#> Row 3: 0 lines
#>
#> Widths of columns:
#> Column 1: 1 npc
#>
#> Object Position:
#> Row: 2
#> Col: 1
#> Width: 1
#> Height: 1
#>
#> Object Row Heights:
#> Row 2: 1 null
#>
#> Margin:
#> Top: 0.1 npc
#> Right: 0.1 npc
#> Bottom: 0.1 npc
#> Left: 0.1 npc
#>
#> Global graphical parameters:
#> Are not set
#>
#> Background colour:
#> white
#>
#> Default Cell Info:
#> title:
#> row:1, col:1, text:NULL, mch:Inf, x:0.5, y:0.5, hjust:0.5, vjust:0.5, rot:0,
#> footer:
#> row:3, col:1, text:NULL, mch:Inf, x:0.5, y:0.5, hjust:0.5, vjust:0.5, rot:0,Note: This is effectively the same as calling
show_spec(simple_layout).
Within every layout function, you can set the global graphical
parameters for all text elements and default graphical parameters for
individual text elements. You can use the show_spec()
function to see if global and default graphical parameters are set.
You can alter individual graphical parameters using the
set_cell() function. Setting a value at the individual
level supersedes the global level.
If not specified in your function calls, the defaults within the
gridify function are used.
Please read more about Default Graphical Parameters in
vignette("create_custom_layout", package = "gridify").
To see all available graphical parameters view grid::gpar documentation.
Here is an example where we set global graphical parameters to a
complex layout. We set the font colour to "navy", and font
size to 12.
figure_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()
g <- gridify(object = figure_obj, layout = complex_layout(global_gpar = grid::gpar(col = "navy", fontsize = 12))) %>%
set_cell("header_left", "Left Header") %>%
set_cell("header_middle", "Middle Header") %>%
set_cell("title", "Title") %>%
set_cell("subtitle", "Subtitle") %>%
set_cell("note", "Note") %>%
set_cell("footer_left", "Left Footer") %>%
set_cell("footer_middle", "Middle Footer") %>%
set_cell("footer_right", "Right Footer")Now we set individual graphical parameters for the
right_header. We set the font colour to
"purple" and the font size to 20.
g <- g %>%
set_cell("header_right", "Right Header", gpar = grid::gpar(col = "purple", fontsize = 20))
print(g)Here is an example of how to set the background colour using the
background argument in simple_layout(). By
default, it uses grid::get.gpar()$fill (white background).
In this example, we set the background colour to
"beige".
The background argument works across all built-in layout
functions, including simple_layout(),
complex_layout(), pharma_layout_base(),
pharma_layout_A4(), and
pharma_layout_letter(). It can also be applied in any
custom layouts you create
(vignette("create_custom_layout", package = "gridify")).
Note: When using ggplot2, you may also
need to set the plot’s background colour to match the layout’s
background.
figure_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::theme(
plot.background = ggplot2::element_rect(fill = "beige", colour = NA), # Entire plot background
panel.background = ggplot2::element_rect(fill = "beige", colour = NA), # Panel (where data is plotted)
panel.border = ggplot2::element_rect(colour = "black", fill = NA)
) +
ggplot2::geom_line()
g <- gridify(figure_obj, layout = simple_layout(background = "beige")) %>%
set_cell("title", "Title") %>%
set_cell("footer", "Footer")
print(g)set_cell() ArgumentsAs well as adjusting the individual graphical parameters as shown
above, we can also use set_cell() to customise various
features such as maximum characters per line, position, and rotation for
text elements.
We can specify the maximum number of characters per line using the
argument mch. This is useful for wrapping long strings
across multiple lines.
Here is an example of a figure with simple_layout()
applied. We set the footer to a long string, and then set the maximum
number of characters per line to 45 using the
mch argument.
figure_obj <- ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line()
long_footer_string <- paste0(
"This is a footer. We can have a long description here.",
"We can have another long description here.",
"We can have another long description here."
)
g <- gridify(figure_obj, layout = simple_layout()) %>%
set_cell("title", "Title") %>%
set_cell("footer", long_footer_string, mch = 45)
print(g)We can also use set_cell() to adjust position and
rotation of text elements:
x and y define the x and y coordinates
of the text element. For example x = 0 places the element
at the far left and x = 1 at the far right.
hjust and vjust control how the text
element is anchored relative to the x or y
point. For instance:
hjust = 0 aligns the left edge of the element to
x.hjust = 0.5 centers the element at x.hjust = 1 aligns the right edge of the element to
x.vjust works in a similar way with
y.
vjust = 0 aligns the bottom edge of the element to
y.vjust = 0.5 centers the element at y.vjust = 1 aligns the top edge of the element to
y.rot sets the rotation angle of the text element in
degrees, applied anticlockwise from the x-axis.
x, y, hjust, and
vjust all take values between 0 and
1.
We now take the previous example and apply x = 0,
hjust = 0, and rot = 5 to the footer. This
aligns the left edge of the footer to the left corner of the cell, with
a rotation of 5 degrees.
g <- gridify(figure_obj, layout = simple_layout()) %>%
set_cell("title", "Title") %>%
set_cell("footer", long_footer_string, mch = 45, x = 0, hjust = 0, rot = 5)
print(g)When using the simple_layout() and
complex_layout() functions, there is an optional
scales argument which can be either "fixed"
(default) or "free".
The "fixed" scale ensures that cells for text elements
(titles, footers, etc.) retain a static height, with the figure / table
taking up the remaining space. This prevents text overlap while
maintaining a structured layout, but may result in different height
proportions between the text elements and the output. The
"free" scale sets the heights of the cells to be
proportional to the size of the output.
Here is an example of a figure with complex_layout() and
the default scales = "fixed" applied.
fixed_scales_g <- gridify(
object = ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line(),
layout = complex_layout()
) %>%
set_cell("header_right", "Right Header") %>%
set_cell("title", "Title", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("subtitle", "Subtitle", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("note", "Note", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("footer_left", "Left Footer", hjust = 1, vjust = 0.5, gpar = grid::gpar(fontsize = 10)) %>%
set_cell("footer_middle", "Middle Footer", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("footer_right", "Right Footer", hjust = 0, vjust = 0.5, gpar = grid::gpar(fontsize = 10))
print(fixed_scales_g)When we apply scales = "free" text elements scale
dynamically, which may cause overlap if the output space is small.
free_scales_g <- gridify(
object = ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line(),
layout = complex_layout(scales = "free")
) %>%
set_cell("header_right", "Right Header") %>%
set_cell("title", "Title", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("subtitle", "Subtitle", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("note", "Note", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("footer_left", "Left Footer", hjust = 1, vjust = 0.5, gpar = grid::gpar(fontsize = 10)) %>%
set_cell("footer_middle", "Middle Footer", gpar = grid::gpar(fontsize = 30)) %>%
set_cell("footer_right", "Right Footer", hjust = 0, vjust = 0.5, gpar = grid::gpar(fontsize = 10))
print(free_scales_g)When working with .Rmd or .Qmd files, we
can also remove the text overlap when scales = "free" by
adjusting the knitr options fig.width and
fig.height to expand the output.
When exporting to .pdf, .png or
.jpeg we can remove text overlap by adjusting
width and height whilst using the
export_to() function. This will be explained in more detail
in the section Exporting to PDF, PNG, TIFF,
and JPEG below.
gridify provides two global options
(gridify.adjust_height.default and
gridify.adjust_height.line) for adjusting row heights in
layouts, based on measurement height units and when
adjust_height (a layout argument) equals
TRUE.
It is not recommended to set these options unless truly needed, as it may lead to inconsistencies between projects.
By default:
"cm", "inches",
"mm"), row heights are adjusted by 0.25."lines"), row heights are
adjusted by 0.10.These values can be increased to create more spacing between text elements using the following global options:
gridify.adjust_height.default – applies when row
heights are in "cm", "inches", or
"mm".gridify.adjust_height.line – applies when row heights
are in "lines".Please note that these options will not affect any
row with a unit of "npc", as then the row height is not
defined by a measurement but a percentage of available height. These
options will work only with height units "cm",
"inch", "mm", or "lines" and when
the adjust_height argument equals TRUE.
For simple_layout() and
complex_layout():
scales = "free", the height unit is
"npc" (not supported by either adjustment option).scales = "fixed" (the default), the height unit is
"lines", making only
gridify.adjust_height.line applicable.adjust_height is always set to TRUE within
the function code.For pharma_layout_base(),
pharma_layout_letter() and
pharma_layout_A4():
"lines", making only
gridify.adjust_height.line applicable.adjust_height argument is TRUE by
default, so users do not have to set this argument.In summary, only gridify.adjust_height.line is
applicable to predefined layouts, and for simple_layout()
and complex_layout(), only when
scales = "fixed".
In contrast, gridify.adjust_height.default is not
applicable to any predefined layout. It can instead be used with custom
layouts in a similar way to gridify.adjust_height.line -
see
vignette("create_custom_layout", package = "gridify").
Example with complex_layout()
Here is an example of the use of
gridify.adjust_height.line with
complex_layout(). We create a gridify object
by applying complex_layout() with
scales = "fixed" to a line plot and print the object to
view it with default adjustments.
g <- gridify(
object = ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line(),
layout = complex_layout()
) %>%
set_cell("header_left", "Left Header") %>%
set_cell("header_middle", "Middle Header") %>%
set_cell("header_right", "Right Header") %>%
set_cell("title", "Title") %>%
set_cell("subtitle", "Subtitle") %>%
set_cell("note", "Note") %>%
set_cell("footer_left", "Left Footer") %>%
set_cell("footer_middle", "Middle Footer") %>%
set_cell("footer_right", "Right Footer")
print(g)Now we set gridify.adjust_height.line to
0.7 using the options() function. This
increases the height of the rows and the space between text
elements.
Example with pharma_layout_letter()
Here is an example of the use of
gridify.adjust_height.line with
pharma_layout_letter(). We set the
gridify.adjust_height.line option back to the default of
0.1. Then we create a gridify object by
applying pharma_layout_letter() to a line plot.
options(gridify.adjust_height.line = 0.1)
g <- gridify(
object = ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line(),
layout = pharma_layout_letter()
) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "<PROJECT> / <INDICATION>") %>%
set_cell("header_left_3", "<STUDY>") %>%
set_cell("header_right_2", "<Draft or Final>") %>%
set_cell("output_num", "<Figure> xx.xx.xx") %>%
set_cell("note", "<Note or Footnotes>") %>%
set_cell("references", "<References:>") %>%
set_cell("footer_left", "Program: <PROGRAM NAME>, YYYY-MM-DD at HH:MM") %>%
set_cell("footer_right", "Page xx of nn")
print(g)Now we set gridify.adjust_height.line to
0.7.
We can export gridify objects to PDF, PNG, TIFF, and
JPEG files using the export_to() function.
Here is an example where we export a gridify object to a
PDF file.
We take the earlier example where we applied
pharma_layout_letter() to a line plot.
gridify_obj <- gridify(
object = ggplot2::ggplot(data = mtcars, ggplot2::aes(x = mpg, y = wt)) +
ggplot2::geom_line(),
layout = pharma_layout_letter()
) %>%
set_cell("header_left_1", "My Company") %>%
set_cell("header_left_2", "<PROJECT> / <INDICATION>") %>%
set_cell("header_left_3", "<STUDY>") %>%
set_cell("header_right_2", "<Draft or Final>") %>%
set_cell("output_num", "<Figure> xx.xx.xx") %>%
set_cell("title_1", "<Title 1>") %>%
set_cell("title_2", "<Title 2>") %>%
set_cell("note", "<Note or Footnotes>") %>%
set_cell("references", "<References:>") %>%
set_cell("footer_left", "Program: <PROGRAM NAME>, YYYY-MM-DD at HH:MM") %>%
set_cell("footer_right", "Page xx of nn") %>%
set_cell("watermark", "Draft")Then we pass the gridify object to the
export_to() function. We specify the desired file type and
name using the to argument.
Instead of just a file name, the to argument can also be
set to a file path if we want to change the location where the file is
saved.
To export the object to a PNG file, we specify a file name with the
.png file extension.
To export the object to a TIFF file, we specify a file name with the
.tiff or .tif file extension.
Similarly, to export the object to a JPEG file, we specify a file
name with the .jpeg or .jpg file extension. We
can also modify characteristics such as width and
height by passing them into export_to() after
the to argument.
These examples should give you a good understanding of how to use the
gridify package to add text elements to simple figures and
tables. Remember, you can customize the layout and text elements to suit
your needs. Happy gridifying!
To see how to use gridify with more complex examples
such as multi-page figures and tables please check out
vignette("multi_page_examples", package = "gridify"). If
you need a custom layout suited for your needs please check out
vignette("create_custom_layout", package = "gridify").