dev2                  package:base                  R Documentation

Copy Graphics Between Multiple Devices

Description:

     `dev.copy' copies the graphics contents of the current device to
     the device specified by `which' or to a new device which has been
     created by the function specified by `device' (it is an error to
     specify both `which' and `device').

     `dev.print' copies the graphics contents of the current device to
     a new device which has been created by the function specified by
     `device' and then shuts the new device.

     `dev.copy2eps' is similar to `dev.print' but produces an EPSF
     output file, in portrait orientation (`horizontal = FALSE')

     `dev.control' allows the user to control the recording of graphics
     operations in a device.  If `displaylist' is "inhibit" then
     recording is turned off.

Usage:

     dev.copy(device, ..., which=dev.next())
     dev.print(device=postscript, ...)
     dev.copy2eps(...)
     dev.control(displaylist)

Arguments:

  device: A device function (e.g., `x11', `postscript', ...)

     ...: Arguments to the `device' function above. For `dev.print',
          this includes `which' and by default any `postscript'
          arguments.

   which: A device number specifying the device to copy to

displaylist: A character string

Details:

     For `dev.copy2eps', `width' and `height' are taken from the
     current device unless otherwise specified.  If just one of `width'
     and `height' is specified, the other is adjusted to preserve the
     aspect ratio of the device being copied.  The default file name is
     `Rplot.eps'.

     The default for `dev.print' is to produce and print a postscript
     copy, if `options("printcmd")' is set suitably.

     `dev.print' is most useful for producing a postscript print (its
     default) when the following applies.  Unless `file' is specified,
     the plot will be printed.  Unless `width', `height' and
     `pointsize' are specified the plot dimensions will be taken from
     the current device, shrunk if necessary to fit on the paper.
     (`pointsize' is rescaled if the plot is shrunk.)  If `horizontal'
     is not specified and the plot can be printed at full size by
     switching its value this is done instead of shrinking the plot
     region.

     If `dev.print' is used with a specified device (even `postscript')
     it sets the width and height in the same way as `dev.copy2eps'.

Value:

     `dev.copy' returns the name and number of the device which has
     been copied to.

     `dev.print' and `dev.copy2eps' return the name and number of the
     device which has been copied from.

Note:

     Most devices (including all screen devices) have a display list
     which records all of the graphics operations that occur in the
     device. `dev.copy' copies graphics contents by copying the display
     list from one device to another device.  Also, automatic redrawing
     of graphics contents following the resizing of a device depends on
     the contents of the display list.

     After the command `dev.control("inhibit")', graphics operations
     are not recorded in the display list so that `dev.copy' and
     `dev.print' will not copy anything and the contents of a device
     will not be redrawn automatically if the device is resized.

     The recording of graphics operations is relatively expensive in
     terms of memory so the command `dev.control("inhibit")' can be
     useful if memory usage is an issue.

See Also:

     `dev.cur' and other `dev.xxx' functions

Examples:

     x11()
     plot(rnorm(10), main="Plot 1")
     dev.copy(device=x11)
     mtext("Copy 1", 3)
     dev.print(width=6, height=6, horizontal=FALSE) # prints it
     dev.off(dev.prev())
     dev.off()

