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
). (If recording
is off on the current device, there are no contents to copy: this will
result in no plot or an empty plot.)
The device copied to becomes the current 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.copy2pdf
is the analogue for PDF output.
dev.control
allows the user to control the recording of
graphics operations in a device. If displaylist
is "inhibit"
("enable"
) then recording is turned off (on). It is only safe
to change this at the beginning of a plot (just before or just after a
new page). Initially recording is on for screen devices, and off for
print devices.
dev.copy(device, …, which = dev.next())
dev.print(device = postscript, …)
dev.copy2eps(…)
dev.copy2pdf(…, out.type = "pdf")
dev.control(displaylist = c("inhibit", "enable"))
A device function (e.g., x11
,
postscript
, …)
Arguments to the device
function above: for
dev.copy2eps
arguments to postscript
and for
dev.copy2pdf
, arguments to pdf
.
For dev.print
, this includes which
and by default any
postscript
arguments.
A device number specifying the device to copy to.
The name of the output device: can be "pdf"
, or
"quartz"
(some macOS builds) or "cairo"
(Windows
and some Unix-alikes, see cairo_pdf
).
A character string: the only valid values are
"inhibit"
and "enable"
.
dev.copy
returns the name and number of the device which has
been copied to.
dev.print
, dev.copy2eps
and dev.copy2pdf
return
the name and number of the device which has been copied from.
Note that these functions copy the device region and not a
plot: the background colour of the device surface is part of what is
copied. Most screen devices default to a transparent background, which
is probably not what is needed when copying to a device such as
png
.
For dev.copy2eps
and dev.copy2pdf
, 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
or
Rplot.pdf
, and can be overridden by specifying a file
argument.
Copying to devices such as postscript
and
pdf
which need font families pre-specified needs extra
care -- R is unaware of which families were used in a plot and so
they will need to manually specified by the fonts
argument
passed as part of …
. Similarly, if the device to be copied
from was opened with a family
argument, a suitable
family
argument will need to be included in …
.
The default for dev.print
is to produce and print a postscript
copy. This will not work unless options("printcmd")
is
set suitably and you have a PostScript printing system: see
postscript
for how to set this up. Windows users may
prefer to use dev.print(win.print)
.
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
. This will not be appropriate unless the device
specifies dimensions in inches, in particular not for
png
, jpeg
, tiff
and bmp
unless
units = "inches"
is specified.
dev.cur
and other dev.xxx
functions.
x11() # on a Unix-alike
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()
Run the code above in your browser using DataLab