R: Copy Graphics Between Multiple Devices

dev2 {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()

[Package Contents]