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
.
flextable
Here 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: empty
As 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")
.