R: Record and Replay Plots

recordPlot {grDevices} | R Documentation

## Record and Replay Plots

### Description

Functions to save the current plot in an R variable, and to replay it.

### Usage

    recordPlot(load=NULL, attach=NULL)
    replayPlot(x, reloadPkgs=FALSE)

### Arguments

`load` | If not `NULL`, a character vector of package names, which are saved as part of the recorded plot.
`attach` | If not `NULL`, a character vector of package names, which are saved as part of the recorded plot.
`x` | A saved plot.
`reloadPkgs` | A logical indicating whether to reload and/or reattach any packages that were saved as part of the recorded plot.

### Details

These functions record and replay the displaylist of the current graphics device. The returned object is of class `"recordedplot"`, and `replayPlot` acts as a `print` method for that class.

The returned object is stored as a pairlist, but the usual methods for examining R objects such as `deparse` and `str` are liable to mislead.

### Value

`recordPlot` returns an object of class `"recordedplot"`.

`replayPlot` has no return value.

### Warning

The format of recorded plots may change between R versions, so recorded plots should not be used as a permanent storage format for R plots.

As of R 3.3.0, it is possible (again) to replay a plot from another R session using, for example, `saveRDS` and `readRDS`. It is even possible to replay a plot from another R version, however, this will produce warnings, may produce errors, or something worse.

### Note

Replay of a recorded plot may not produce the correct result (or may just fail) if the display list contains a call to `recordGraphics` which in turn contains an expression that calls code from a non-base package other than graphics or grid. The most well-known example of this is a plot drawn with the package ggplot2. One solution is to load the relevant package(s) before replaying the recorded plot. The `load` and `attach` arguments to `recordPlot` can be used to automate this - any packages named in `load` will be reloaded, via `loadNamespace`, and any packages named in `attach` will be reattached, via `library`, as long as `reloadPkgs` is `TRUE` in the call to `replayPlot`. This is only relevant when attempting to replay in one R session a plot that was recorded in a different R session.

### See Also

The displaylist can be turned on and off using `dev.control`. Initially recording is on for screen devices, and off for print devices.

[Package grDevices version 3.5.1 Index]