{camcorder} overrides
functions like print.ggplot or print.patchwork
to capture plots. In some cases though, when other functions are used to
print plots, {camcorder} cannot automatically grab them.
record_polaroid() provides a way to expand the capturing
capabilities of {camcorder} to other devices.
This can be achieved by adding record_polaroid() after
the code used for plotting. Although record_polaroid() has
to be called manually, it allows saving a plot with the settings of an
existing {camcorder} setup, like width, height, or
directory.
This is particularly useful when you have an ongoing recording of
ggplot2 code and then start using a package that has its own printing
function, like {geofacet}.
{geofacet}In this example, we only use the state_ranks dataset
from {geofacet} but no functions from the package. Our
basic {camcorder} setup works as expected.
library(ggplot2)
library(geofacet)
library(camcorder)
gg_record(device = "png", width = 8, height = 6)
ggplot(state_ranks) +
geom_col(aes(variable, rank, fill = variable)) +
coord_flip() +
facet_wrap(vars(state)) +
theme_bw()If we were to replace the facet_wrap() function with
facet_geo() though, no plot would be saved, since
{geofacet} uses its own printing function. This is where
record_polaroid() comes in. By adding it (no arguments
needed), {camcorder} saves the plot in the same directory
and with the same dimensions.
library(ggplot2)
library(geofacet)
library(camcorder)
gg_record(
dir = file.path(tempdir(), "recording"),
device = "png",
width = 8,
height = 6
)
ggplot(state_ranks) +
geom_col(aes(variable, rank, fill = variable)) +
coord_flip() +
facet_geo(vars(state)) +
theme_bw()
record_polaroid()record_polaroid() can be used with base R plots as well.
Not only does it saves the plot but it also displays the image in
RStudio’s Viewer pane with the desired dimensions declared in
gg_record().
library(camcorder)
gg_record(
dir = file.path(tempdir(), "recording"),
device = "png",
width = 8,
height = 6
)
plot(trees)
record_polaroid()