% File src/library/grid/vignettes/saveload.Rnw
% Part of the R package, https://www.R-project.org
% Copyright 2001-13 Paul Murrell and the R Core Team
% Distributed under GPL 2 or later

\documentclass[a4paper]{article}
%\VignetteIndexEntry{Persistent representations}
%\VignettePackage{grid}
\newcommand{\code}[1]{\texttt{#1}}
\newcommand{\pkg}[1]{{\normalfont\fontseries{b}\selectfont #1}}
\newcommand{\grid}{\pkg{grid}}
\newcommand{\R}{{\sffamily R}}
\setlength{\parindent}{0in}
\setlength{\parskip}{.1in}
\setlength{\textwidth}{140mm}
\setlength{\oddsidemargin}{10mm}
\title{Saving and Loading \grid{} Graphics}
\author{Paul Murrell}

\begin{document}
\maketitle

<<echo=FALSE, results=hide>>=
library(grDevices)
library(grid)
ps.options(pointsize = 12)
options(width = 60)
@
This is a general discussion concerning how you might go about
creating (and reusing) persistent representations of \grid{}
graphics, and some of the pitfalls in the various options.

\subsection*{\R{} code}

The way I usually work with graphics is to write \R{} code in a text file
and copy-and-paste or \code{source()} it into R.  In this case,
the persistent
representation of the graphics is the raw \R{} code.

The representation is fully editable.

The representation is persistent across \R{} sessions, but may not be
persistent across \R{} versions because the names, argument lists,
and/or behaviour of the \grid{} functions may
change.  The representation can be reloaded into R.
Incompatibilities between versions should be handled gracefully by
\R{}'s argument-matching, type-checking, and/or version-checking.

\subsection*{\grid{} \code{grob}s}

The next most flexible way of creating a persistent version of \grid{}
graphics is to \code{save()} a \grid{} \code{grob} \ldots

<<>>=
gt <- textGrob("hi")
save(gt, file = "mygridplot")
@
The representation is reloadable so you can reproduce an image \ldots{}

<<results=hide>>=
load("mygridplot")
grid.draw(gt)
@
And the representation is editable;  there is an API for interacting
with \grid{} \code{grobs}, including adding new elements, removing
elements, editing features of a \code{grob} and so on.  See
\code{getGrob()}, \code{addGrob()}, \code{removeGrob()},
and \code{editGrob()}.

The representation is persistent across \R{} sessions, but is
vulnerable to changes in the internal representation of \grid{}
\code{grob}s.  The advantage of this representation is that it is
possible to share and edit graphics produced by someone else,
without seeing the code they used to produce it.

\subsection*{Device output}

A third way of creating a persistent version of \grid{} graphics is to
``save'' it to a persistent device format (e.g., PostScript, PDF, \ldots).

It is possible to edit these representations, but hardly convenient.
In particular, none of the coordinate systems used in the
construction of plots (e.g., axis scales) are available for editing.

The representation is persistent regardless of \R{} sessions or versions,
but it cannot be reloaded into \R{}.

\subsection*{Display lists}

This final option is \emph{not} recommended, but it is possible to do
so its downsides need to be explained.

What you can do is ``save'' an \R{} display list using, for example, \ldots

<<>>=
grid.grill()
temp <- recordPlot()
save(temp, file = "mygridplot")
@
This representation is not editable\footnote{Well, there's nothing stopping
you editing it, but you should take out life insurance first.}, but it can be
reloaded
and rerun to reproduce the output \ldots

<<>>=
load("mygridplot")
temp
@
The representation is persistent across \R{} sessions, but the saved
information involves non-public interfaces and structures which may
change between \R{} versions.  You also have to make sure that \grid{}
has been reloaded.  Differences between \grid{} and/or \R{} versions
may lead to segmentation faults.
\end{document}

