BMP, JPEG, PNG and TIFF graphics devices
Graphics devices for BMP, JPEG, PNG and TIFF format bitmap files.
bmp(filename = "Rplot%03d.bmp", width = 480, height = 480, units = "px", pointsize = 12, bg = "white", res = NA, …, type = c("cairo", "Xlib", "quartz"), antialias)
jpeg(filename = "Rplot%03d.jpeg", width = 480, height = 480, units = "px", pointsize = 12, quality = 75, bg = "white", res = NA, …, type = c("cairo", "Xlib", "quartz"), antialias)
png(filename = "Rplot%03d.png", width = 480, height = 480, units = "px", pointsize = 12, bg = "white", res = NA, …, type = c("cairo", "cairo-png", "Xlib", "quartz"), antialias)
tiff(filename = "Rplot%03d.tiff", width = 480, height = 480, units = "px", pointsize = 12, compression = c("none", "rle", "lzw", "jpeg", "zip", "lzw+p", "zip+p"), bg = "white", res = NA, …, type = c("cairo", "Xlib", "quartz"), antialias)
the name of the output file. The page number is substituted if a C integer format is included in the character string, as in the default. (The result must be less than
PATH_MAXcharacters long, and may be truncated if not. See
postscriptfor further details.) Tilde expansion is performed where supported by the platform.
the width of the device.
the height of the device.
The units in which
widthare given. Can be
px(pixels, the default),
the default pointsize of plotted text, interpreted as big points (1/72 inch) at
the initial background colour: can be overridden by setting par("bg").
the ‘quality’ of the JPEG image, as a percentage. Smaller values will give more compression but also more degradation of the image.
the type of compression to be used. Ignored for
type = "quartz".
The nominal resolution in ppi which will be recorded in the bitmap file, if a positive integer. Also used for
unitsother than the default, and to convert points to pixels.
type = "Xlib"only, additional arguments to the underlying
X11device such as
familyargument can be supplied. See the ‘Cairo fonts’ section in the help for
character string, one of
"quartz"(some macOS builds) or
"cairo". The latter will only be available if the system was compiled with support for cairo -- otherwise
"Xlib"will be used. The default is set by
getOption("bitmapType")-- the ‘out of the box’ default is
"cairo"where available, otherwise
type = "cairo", giving the type of anti-aliasing (if any) to be used for fonts and lines (but not fills). See
X11. The default is set by
X11.options. Also for
type = "quartz", where antialiasing is used unless
antialias = "none".
Plots in PNG and JPEG format can easily be converted to many other
bitmap formats, and both can be displayed in modern web
browsers. The PNG format is lossless and is best for line
diagrams and blocks of colour. The JPEG format is lossy,
but may be useful for image plots, for example. BMP is a standard
format on Windows. TIFF is a meta-format: the default format written
tiff is lossless and stores RGB (and alpha where
appropriate) values uncompressed---such files are widely accepted,
which is their main virtue over PNG.
png supports transparent backgrounds: use
"transparent". (Not all PNG viewers render files with transparency
correctly.) When transparency is in use in the
type = "Xlib"
variant a very light grey is used as the background and so appears as
transparent if used in the plot. This allows opaque white to be used,
as in the example. The
type = "cairo",
type = "quartz" variants allow
semi-transparent colours, including on a transparent or
tiff with types
semi-transparent colours, including on a transparent or
semi-transparent background. Compression type
‘deflate (Adobe-style)’. Compression types
"zip+p" use horizontal differencing (‘differencing
predictor’, section 14 of the TIFF specification) in combination with
the compression method, which is effective for continuous-tone images,
especially colour ones.
R can be compiled without support for some or all of the types for
each of these devices: this will be reported if you attempt to use
them on a system where they are not supported. For
"Xlib" they may not be usable unless the X11 display is available to
the owner of the R process.
type = "cairo" requires cairo 1.2
type = "quartz" uses the
and so is only available where that is (on some macOS builds: see
By default no resolution is recorded in the file, except for BMP. Viewers will often assume a nominal resolution of 72 ppi when none is recorded. As resolutions in PNG files are recorded in pixels/metre, the reported ppi value will be changed slightly.
For graphics parameters that make use of dimensions in inches
(including font sizes in points) the resolution used is
72 ppi if unset).
png will normally use a palette if there are less than 256
colours on the page, and record a 24-bit RGB file otherwise (or a
32-bit ARGB file if
type = "cairo" and non-opaque colours are
type = "cairo-png" uses cairographics' PNG
backend which will never use a palette and normally creates a larger
32-bit ARGB file---this may work better for specialist uses with
Quartz-produced PNG and TIFF plots with a transparent background are
recorded with a dark grey matte which will show up in some viewers,
Preview on macOS.
Unknown resolutions in BMP files are recorded as 72 ppi.
A plot device is opened: nothing is returned to the R interpreter.
type = "Xlib" these devices are based on the
device. The colour model used will be that set up by
X11.options at the time the first Xlib-based devices was opened
(or the first after all such devices have been closed).
Note that by default the
height values are in
pixels not inches. A warning will be issued if both are less than 20.
If you plot more than one page on one of these devices and do not
include something like
%d for the sequence number in
file, the file will contain the last page plotted.
Differences between OSes
These functions are interfaces to three or more different underlying devices.
On Windows, devices based on plotting to a hidden screen using Windows' GDI calls.
On platforms with support for X11, plotting to a hidden X11 display.
On macOS when working at the console and when R is compiled with suitable support, using Apple's Quartz plotting system.
Where support has been compiled in for cairographics, plotting on cairo surfaces. This may use the native platform support for fonts, or it may use
fontconfigto support a wide range of font formats.
Inevitably there will be differences between the options supported and output produced. Perhaps the most important are support for antialiased fonts and semi-transparent colours: the best results are likely to be obtained with the cairo- or Quartz-based devices where available.
The default extensions are
.tif on Windows, and
This section describes the implementation of the conventions for graphics devices set out in the “R Internals Manual”.
The default device size is in pixels.
Font sizes are in big points interpreted at
The default font family is Helvetica.
Line widths in 1/96 inch (interpreted at
resppi), minimum one pixel for
type = "Xlib", 0.01 for
type = "cairo".
type = "Xlib"circle radii are in pixels with minimum one.
Colours are interpreted by the viewing application.
type = "quartz" see the help for
The PNG specification, http://www.w3.org/TR/PNG/.
The TIFF specification, including extensions, at https://partners.adobe.com/public/developer/tiff/.
capabilities to see if these devices are
supported by this build of R, and if
type = "cairo" is supported.
bitmap provides an alternative way to generate plots in many
bitmap formats that does not depend on accessing the X11 display but does
depend on having GhostScript installed.
## these examples will work only if the devices are available ## and cairo or an X11 display or a macOS display is available. ## copy current plot to a (large) PNG file dev.print(png, file = "myplot.png", width = 1024, height = 768) png(file = "myplot.png", bg = "transparent") plot(1:10) rect(1, 5, 3, 7, col = "white") dev.off() ## will make myplot1.jpeg and myplot2.jpeg jpeg(file = "myplot%d.jpeg") example(rect) dev.off()