postscript starts the graphics device driver for producing
  PostScript graphics.postscript(file = if(onefile) "Rplots.ps" else "Rplot%03d.ps",
           onefile, family, title, fonts, encoding, bg, fg,
           width, height, horizontal, pointsize,
           paper, pagecentre, print.it, command,
           colormodel, useKerning, fillOddEven)"", the output is piped to the command given by the argument
    command.
    If it is of the form "|cmd", the output is piped to the
    command given by cmd.    For use with onefile = FALSE give a printf format such
    as "Rplot%03d.ps" (the default in that case).  The string
    should not otherwise contain a %: if it is really necessary,
    use %% in the string for % in the file name.
    A single integer format matching the regular expression
    "%[#0 +=-]*[0-9.]*[diouxX]" is allowed.
    Tilde expansion (see path.expand) is done.
  
DocumentMedia comment.  Defaults to TRUE."Helvetica".Title comment in the
    file.  Defaults to "R Graphics Output".NULL."default".  The latter is interpreted as
    "ISOLatin1.enc" unless the locale is recognized as
    corresponding to a language using ISO 8859-{2,5,7,13,15} or KOI8-{R,U}.
    "CP1250.enc" (Central European), "CP1251.enc" (Cyrillic),
    "CP1253.enc" (Greek) or "CP1257.enc" (Baltic) if one
    of those codepages is in use, otherwise "WinAnsi.enc"
    (codepage 1252).
    The file is looked for in the enc directory of package
    grDevices if the path does not contain a path separator.  An
    extension ".enc" can be omitted.
  "transparent" (or any other non-opaque colour), no background
    is painted.  Defaults to "transparent"."black".0.    If paper != "special" and width or height is less
    than 0.1 or too large to give a total margin of 0.5 inch, the
    graphics region is reset to the corresponding paper dimension minus 0.5.
  
12."a4", "letter" (or "us"), "legal" and
    "executive" (and these can be capitalized).
    Also, "special" can be used, when arguments width
    and height specify the paper size.  A further choice is
    "default" (the default): If this is selected, the papersize
    is taken from the option "papersize" if that is set and to
    "a4" if it is unset or empty.file is a real file name.)
    Defaults to false."default", the value of option "printcmd".  The
    length limit is 2*PATH_MAX,
    typically 8096 bytes.
    520 bytes.
  "srgb", "srgb+gray",
    "rgb", "rgb-nogray", "gray" (or "grey") and
    "cmyk".  Defaults to "srgb".  See section
    ‘Color models’.TRUE.polygon for details.  Default FALSE.par(font = ) or the grid
  parameter gpar(fontface = ).  Font families can be
  specified either as an an initial/default font family for the device
  via the family argument or after the device is opened by
  the graphics parameter par(family = ) or the grid
  parameter gpar(fontfamily = ).  Families which will be
  used in addition to the initial family must be specified in the
  fonts argument when the device is opened. Font families are declared via a call to postscriptFonts. The argument family specifies the initial/default font family
  to be used.  In normal use it is one of "AvantGarde",
  "Bookman", "Courier", "Helvetica",
  "Helvetica-Narrow", "NewCenturySchoolbook",
  "Palatino" or "Times", and refers to the standard Adobe
  PostScript fonts families of those names which are included (or
  cloned) in all common PostScript devices. Many PostScript emulators (including those based on
  ghostscript) use the URW equivalents of these fonts, which are
  "URWGothic", "URWBookman", "NimbusMon",
  "NimbusSan", "NimbusSanCond", "CenturySch",
  "URWPalladio" and "NimbusRom" respectively.  If your
  PostScript device is using URW fonts, you will obtain access to more
  characters and more appropriate metrics by using these names.  To make
  these easier to remember, "URWHelvetica" == "NimbusSan" and
  "URWTimes" == "NimbusRom" are also supported. Another type of family makes use of CID-keyed fonts for East Asian
  languages -- see postscriptFonts. The family argument is normally a character string naming a
  font family, but family objects generated by Type1Font
  and CIDFont are also accepted.  For compatibility with
  earlier versions of R, the initial family can also be specified as a
  vector of four or five afm files. Note that R does not embed the font(s) used in the PostScript output:
  see embedFonts for a utility to help do so. Viewers and embedding applications frequently substitute fonts for
  those specified in the family, and the substitute will often have
  slightly different font metrics. useKerning = TRUE spaces the
  letters in the string using kerning corrections for the intended
  family: this may look uglier than useKerning = FALSE.text are in that encoding.  However,
  the encoding used on machines running R may well be different, and by
  using the encoding argument the glyphs can be matched to
  encoding in use.  This suffices for European and Cyrillic languages,
  but not for East Asian languages.  For the latter, composite CID fonts are
  used.  These fonts are useful for other languages: for example they
  may contain Greek glyphs. (The rest of this section applies only when CID
  fonts are not used.) None of this will matter if only ASCII characters (codes 32--126) are
  used as all the encodings (except "TeXtext") agree over that
  range.  Some encodings are supersets of ISOLatin1, too.  However, if
  accented and special characters do not come out as you expect, you may
  need to change the encoding.  Some other encodings are supplied with
  R: "WinAnsi.enc" and "MacRoman.enc" correspond to the
  encodings normally used on Windows and Classic Mac OS (at least by
  Adobe), and "PDFDoc.enc" is the first 256 characters of the
  Unicode encoding, the standard for PDF.  There are also encodings
  "ISOLatin2.enc", "CP1250.enc", "ISOLatin7.enc"
  (ISO 8859-13), "CP1257.enc", and "ISOLatin9.enc" (ISO
  8859-15), "Cyrillic.enc" (ISO 8859-5), "KOI8-R.enc",
  "KOI8-U.enc", "CP1251.enc", "Greek.enc" (ISO
  8859-7) and "CP1253.enc".  Note that many glyphs in these
  encodings are not in the fonts corresponding to the standard families.
  (The Adobe ones for all but Courier, Helvetica and Times cover little
  more than Latin-1, whereas the URW ones also cover Latin-2, Latin-7,
  Latin-9 and Cyrillic but no Greek.  The Adobe exceptions cover the
  Latin character sets, but not the Euro.) If you specify the encoding, it is your responsibility to ensure that
  the PostScript font contains the glyphs used.  One issue here is the Euro
  symbol which is in the WinAnsi and MacRoman encodings but may well not
  be in the PostScript fonts.  (It is in the URW variants; it is not in
  the supplied Adobe Font Metric files.) There is an exception.  Character 45 ("-") is always set
  as minus (its value in Adobe ISOLatin1) even though it is hyphen in
  the other encodings.  Hyphen is available as character 173 (octal
  0255) in all the Latin encodings, Cyrillic and Greek.  (This can be
  entered as "\uad" in a UTF-8 locale.)  There are some
  discrepancies in accounts of glyphs 39 and 96: the supplied encodings
  (except CP1250 and CP1251) treat these as ‘quoteright’ and
  ‘quoteleft’ (rather than ‘quotesingle’/‘acute’
  and ‘grave’ respectively), as they are in the Adobe
  documentation.encoding = "TeXtext.enc", taking care that
  the ASCII characters < > \ _ { } are not available in those
  fonts. There are supplied families "ComputerModern" and
  "ComputerModernItalic" which use this encoding, and which are
  only supported for postscript (and not pdf).  They are
  intended to use with the Type 1 versions of the TeX CM fonts.  It will
  normally be possible to include such output in TeX or LaTeX provided
  it is processed with dvips -Ppfb -j0 or the equivalent on your
  system. (-j0 turns off font subsetting.)  When family =
    "ComputerModern" is used, the italic/bold-italic fonts used are
  slanted fonts (cmsl10 and cmbxsl10).  To use text italic
  fonts instead, set family = "ComputerModernItalic". These families use the TeX math italic and  symbol fonts for a
  comprehensive but incomplete coverage of the glyphs covered by the
  Adobe symbol font in other families.  This is achieved by
  special-casing the postscript code generated from the supplied
  CM_symbol_10.afm."srgb") is sRGB. The alternative "srgb+gray" uses sRGB for colors, but with pure
  gray colors (including black and white) expressed as greyscales (which
  results in smaller files and can be advantageous with some printer
  drivers).  Conversely, its files can be rendered much slower on some
  viewers, and there can be a noticeable discontinuity in color
  gradients involving gray or white. Other possibilities are "gray" (or "grey") which used
  only greyscales (and converts other colours to a luminance), and
  "cmyk".  The simplest possible conversion from sRGB to CMYK is
  used
  (https://en.wikipedia.org/wiki/CMYK_color_model#Mapping_RGB_to_CMYK),
  and raster images are output in RGB. Color models provided for backwards compatibility are "rgb")
  (which is RGB+gray) and "rgb-nogray" which use uncalibrated RGB
  (as used in R prior to 2.13.0).  These result in slightly smaller
  files which may render faster, but do rely on the viewer being
  properly calibrated.postscript in two ways.
  print.it = TRUE causes the command given in
    argument command to be called with argument "file"
    when the device is closed.  Note that the plot file is not deleted
    unless command arranges to delete it. file = "" or file = "|cmd" can be used to print
    using a pipe.  Failure to open the command will probably be reported
    to the terminal but not to R, in which case close the
    device by dev.off immediately.
  "printcmd" is empty and will give an error if
  print.it = TRUE is used.  Suitable commands to spool a PostScript
  file to a printer can be found in RedMon suite available from
  http://www.cs.wisc.edu/~ghost/index.html.  The command will be
  run in a minimized window.   GSView 4.x provides gsprint.exe
  which may be more convenient (it requires Ghostscript version 6.50
  or later).file default to values given by
  ps.options().  The ultimate defaults are quoted in the
  arguments section. postscript opens the file file and the PostScript
  commands needed to plot any graphics requested are written to that
  file.  This file can then be printed on a suitable device to obtain
  hard copy. The file argument is interpreted as a C integer format as used
  by sprintf, with integer argument the page number.
  The default gives files Rplot001.ps, …, Rplot999.ps,
  Rplot1000.ps, …. The postscript produced for a single R plot is EPS (Encapsulated
    PostScript) compatible, and can be included into other documents,
  e.g., into LaTeX, using \includegraphics{<filename>}.  For use
  in this way you will probably want to use setEPS() to
  set the defaults as horizontal = FALSE, onefile = FALSE, paper =
    "special".  Note that the bounding box is for the device
  region: if you find the white space around the plot region excessive,
  reduce the margins of the figure region via par(mar = ). Most of the PostScript prologue used is taken from the R character
  vector .ps.prolog.  This is marked in the output, and can be
  changed by changing that vector.  (This is only advisable for
  PostScript experts: the standard version is in
  namespace:grDevices.) A PostScript device has a default family, which can be set by the user
  via family.  If other font families are to be used when drawing
  to the PostScript device, these must be declared when the device is
  created via fonts;  the font family names for this argument are
  R graphics font family names (see the documentation for
  postscriptFonts). Line widths as controlled by par(lwd = ) are in multiples of
  1/96 inch: multiples less than 1 are allowed.  pch = "." with
  cex = 1 corresponds to a square of side 1/72 inch, which is
  also the ‘pixel’ size assumed for graphics parameters such as
  "cra". When the background colour is fully transparent (as is the initial
  default value), the PostScript produced does not paint the
  background. Almost all PostScript viewers will use a white canvas so
  the visual effect is if the background were white.  This will not be
  the case when printing onto coloured paper, though.postscriptFonts,
  Devices,
  and check.options which is called from both
  ps.options and postscript. cairo_ps for another device that can produce PostScript. More details of font families and encodings and especially handling
  text in a non-Latin-1 encoding and embedding fonts can be found in Paul Murrell and Brian Ripley (2006) Non-standard fonts in PostScript
  and PDF graphics. R News, 6(2):41--47.
  https://www.r-project.org/doc/Rnews/Rnews_2006-2.pdf.require(graphics)
## Not run: ------------------------------------
# # open the file "foo.ps" for graphics output
# postscript("foo.ps")
# # produce the desired graph(s)
# dev.off()              # turn off the postscript device
# postscript("|lp -dlw")
# # produce the desired graph(s)
# dev.off()              # plot will appear on printer
# options(printcmd = 'redpr -P"\\printhost\lw"')
# postscript(file = tempfile("Rps."), print.it = TRUE)
# # produce the desired graph(s)
# dev.off()              # send plot file to the printer
# ## alternative using GSView 4.x
# options(printcmd = '/GhostGum/gsview/gsprint -query')
# 
# # for URW PostScript devices
# postscript("foo.ps", family = "NimbusSan")
# 
# ## for inclusion in Computer Modern TeX documents, perhaps
# postscript("cm_test.eps", width = 4.0, height = 3.0,
#            horizontal = FALSE, onefile = FALSE, paper = "special",
#            family = "ComputerModern", encoding = "TeXtext.enc")
# ## The resultant postscript file can be used by dvips -Ppfb -j0.
# 
# ## To test out encodings, you can use
# TestChars <- function(encoding = "ISOLatin1", family = "URWHelvetica")
# {
#     postscript(encoding = encoding, family = family)
#     par(pty = "s")
#     plot(c(-1,16), c(-1,16), type = "n", xlab = "", ylab = "",
#          xaxs = "i", yaxs = "i")
#     title(paste("Centred chars in encoding", encoding))
#     grid(17, 17, lty = 1)
#     for(i in c(32:255)) {
#         x <- i %% 16
#         y <- i %/% 16
#         points(x, y, pch = i)
#     }
#     dev.off()
# }
# ## there will be many warnings.  We use URW to get a complete enough
# ## set of font metrics.
# TestChars()
# TestChars("ISOLatin2")
# TestChars("WinAnsi")
## ---------------------------------------------
Run the code above in your browser using DataLab