| par {graphics} | R Documentation |
Set or Query Graphical Parameters
Description
par can be used to set or query graphical parameters.
Parameters can be set by specifying them as arguments to par in
tag = value form, or by passing them as a list of tagged
values.
Usage
par(..., no.readonly = FALSE)
<highlevel plot> (..., <tag> = <value>)
Arguments
... |
arguments in |
no.readonly |
logical; if |
Details
Parameters are queried by giving one or more character vectors to
par.
par() (no arguments) or par(no.readonly=TRUE) is used to
get all the graphical parameters (as a named list). Their
names are currently taken from the variable .Pars.
.Pars.readonly contains the names of the par arguments
which are readonly.
R.O. indicates read-only arguments: These may only be used in queries, i.e., they do not set anything.
All but these R.O. and the following
low-level arguments can be set as well in high-level and
mid-level plot functions, such as plot,
points, lines, axis,
title, text, mtext:
-
"ask" -
"family","fig","fin" -
"lend","lheight","ljoin","lmitre" -
"mai","mar","mex" -
"mfrow","mfcol","mfg" -
"new" -
"oma","omd","omi" -
"pin","plt","ps","pty" -
"usr" -
"xlog","ylog"
Value
When parameters are set, their former values are returned in an
invisible named list. Such a list can be passed as an argument to
par to restore the parameter values.
Use par(no.readonly = TRUE) for the full list of parameters
that can be restored.
When just one parameter is queried, the value is a character string. When two or more parameters are queried, the result is a list of character strings, with the list names giving the parameters.
Note the inconsistency: setting one parameter returns a list, but querying one parameter returns a vector.
Graphical Parameters
adjThe value of
adjdetermines the way in which text strings are justified. A value of0produces left-justified text,0.5centered text and1right-justified text. (Any value in[0, 1]is allowed, and on most devices values outside that interval will also work.) Note that theadjargument oftextalso allowsadj = c(x, y)for different adjustment in x- and y- direction.annIf set to
FALSE, high-level plotting functions do not annotate the plots they produce with axis and overall titles. The default is to do annotation.asklogical. If
TRUE, the user is asked for input, before a new figure is drawn.bgThe color to be used for the background of plots. A description of how colors are specified is given below.
btyA character string which determined the type of box which is drawn about plots. If
btyis one of"o","l","7","c","u", or"]"the resulting box resembles the corresponding upper case letter. A value of"n"suppresses the box.cexA numerical value giving the amount by which plotting text and symbols should be scaled relative to the default.
cex.axisThe magnification to be used for axis annotation relative to the current.
cex.labThe magnification to be used for x and y labels relative to the current.
cex.mainThe magnification to be used for main titles relative to the current.
cex.subThe magnification to be used for sub-titles relative to the current.
cinR.O.; character size
(width,height)in inches.colA specification for the default plotting color. A description of how colors are specified is given below.
col.axisThe color to be used for axis annotation.
col.labThe color to be used for x and y labels.
col.mainThe color to be used for plot main titles.
col.subThe color to be used for plot sub-titles.
craR.O.; size of default character
(width,height)in “rasters” (pixels).crtA numerical value specifying (in degrees) how single characters should be rotated. It is unwise to expect values other than multiples of 90 to work. Compare with
srtwhich does string rotation.csiR.O.; height of (default sized) characters in inches.
cxyR.O.; size of default character
(width,height)in user coordinate units.par("cxy")ispar("cin")/par("pin")scaled to user coordinates. Note thatc(strwidth(ch), strheight(ch))for a given stringchis usually much more precise.dinR.O.; the device dimensions,
(width,height), in inches.err(Unimplemented; R is silent when points outside the plot region are not plotted.) The degree of error reporting desired.
familyThe name of a font family for drawing text. This name is device-independent and gets mapped by each graphics device to a device-specific font description. The default value is
""which means that the default device font will be used. Standard values are"serif","sans","mono", and"symbol". Different devices may define others. Some devices will ignore this setting completely.fgThe color to be used for the foreground of plots. This is the default color used for things like axes and boxes around plots. A description of how colors are specified is given below.
figA numerical vector of the form
c(x1, x2, y1, y2)which gives the (NDC) coordinates of the figure region in the display region of the device. If you set this, unlike S, you start a new plot, so to add to an existing plot usenew=TRUEas well.finThe figure region dimensions,
(width,height), in inches. If you set this, unlike S, you start a new plot.fontAn integer which specifies which font to use for text. If possible, device drivers arrange so that 1 corresponds to plain text, 2 to bold face, 3 to italic and 4 to bold italic. Also, font 5 is expected to be the symbol font, in Adobe symbol encoding.
font.axisThe font to be used for axis annotation.
font.labThe font to be used for x and y labels.
font.mainThe font to be used for plot main titles.
font.subThe font to be used for plot sub-titles.
gammathe gamma correction, see argument
gammatohsv.labA numerical vector of the form
c(x, y, len)which modifies the way that axes are annotated. The values ofxandygive the (approximate) number of tickmarks on the x and y axes andlenspecifies the label size. The default isc(5, 5, 7). Currently,lenis unimplemented.lasnumeric in {0,1,2,3}; the style of axis labels.
- 0:
always parallel to the axis [default],
- 1:
always horizontal,
- 2:
always perpendicular to the axis,
- 3:
always vertical.
Note that other string/character rotation (via argument
srttopar) does not affect the axis labels.lendThe line end style. This can be specified as an integer or string: 0 and
"round"mean rounded line caps; 1 and"butt"mean butt line caps; 2 and"square"mean square line caps.lheightThe line height multiplier. The height of a line of text (used to vertically space multi-line text) is found by multiplying the current font size both by the current character expansion and by the line height multiplier. Default value is 1.
ljoinThe line join style. This can be specified as an integer or string: 0 and
"round"mean rounded line joins; 1 and"mitre"mean mitred line joins; 2 and"bevel"mean bevelled line joins.lmitreThe line mitre limit. This controls when mitred line joins are automatically converted into bevelled line joins. The value must be larger than 1 and the default is 10. Not all devices will honour this setting.
ltyThe line type. Line types can either be specified as an integer (0=blank, 1=solid, 2=dashed, 3=dotted, 4=dotdash, 5=longdash, 6=twodash) or as one of the character strings
"blank","solid","dashed","dotted","dotdash","longdash", or"twodash", where"blank"uses ‘invisible lines’ (i.e., doesn't draw them).Alternatively, a string of up to 8 characters (from
c(1:9, "A":"F")) may be given, giving the length of line segments which are alternatively drawn and skipped. See section ‘Line Type Specification’ below.lwdThe line width, a positive number, defaulting to
1. The interpretation is device-specific, and some devices do not implement line widths less than one.maiA numerical vector of the form
c(bottom, left, top, right)which gives the margin size specified in inches.marA numerical vector of the form
c(bottom, left, top, right)which gives the number of lines of margin to be specified on the four sides of the plot. The default isc(5, 4, 4, 2) + 0.1.mex-
mexis a character size expansion factor which is used to describe coordinates in the margins of plots. Note that this does not change the font size, rather specifies the size of font used to convert betweenmarandmai, and betweenomaandomi. mfcol, mfrowA vector of the form
c(nr, nc). Subsequent figures will be drawn in annr-by-ncarray on the device by columns (mfcol), or rows (mfrow), respectively.In a layout with exactly two rows and columns the base value of
"cex"is reduced by a factor of 0.83: if there are three or more of either rows or columns, the reduction factor is 0.66.Consider the alternatives,
layoutandsplit.screen.mfgA numerical vector of the form
c(i, j)whereiandjindicate which figure in an array of figures is to be drawn next (if setting) or is being drawn (if enquiring). The array must already have been set bymfcolormfrow.For compatibility with S, the form
c(i, j, nr, nc)is also accepted, whennrandncshould be the current number of rows and number of columns. Mismatches will be ignored, with a warning.mgpThe margin line (in
mexunits) for the axis title, axis labels and axis line. The default isc(3, 1, 0).mkhThe height in inches of symbols to be drawn when the value of
pchis an integer. Completely ignored currently.newlogical, defaulting to
FALSE. If set toTRUE, the next high-level plotting command (actuallyplot.new) should not clean the frame before drawing “as if it was on a new device”.omaA vector of the form
c(bottom, left, top, right)giving the size of the outer margins in lines of text.omdA vector of the form
c(x1, x2, y1, y2)giving the outer margin region in NDC (= normalized device coordinates), i.e., as fraction (in[0,1]) of the device region.omiA vector of the form
c(bottom, left, top, right)giving the size of the outer margins in inches.pchEither an integer specifying a symbol or a single character to be used as the default in plotting points. See
pointsfor possible values and their interpretation.pinThe current plot dimensions,
(width,height), in inches.pltA vector of the form
c(x1, x2, y1, y2)giving the coordinates of the plot region as fractions of the current figure region.psinteger; the pointsize of text and symbols.
ptyA character specifying the type of plot region to be used;
"s"generates a square plotting region and"m"generates the maximal plotting region.smo(Unimplemented) a value which indicates how smooth circles and circular arcs should be.
srtThe string rotation in degrees. See the comment about
crt.tckThe length of tick marks as a fraction of the smaller of the width or height of the plotting region. If
tck >= 0.5it is interpreted as a fraction of the relevant side, so iftck=1grid lines are drawn. The default setting (tck = NA) is to usetcl = -0.5(see below).tclThe length of tick marks as a fraction of the height of a line of text. The default value is
-0.5; settingtcl = NAsetstck = -0.01which is S' default.tmagA number specifying the enlargement of text of the main title relative to the other annotating text of the plot.
typecharacter; the default plot type desired, see
plot.default(type=...), defaulting to"p".usrA vector of the form
c(x1, x2, y1, y2)giving the extremes of the user coordinates of the plotting region. When a logarithmic scale is in use (i.e.,par("xlog")is true, see below), then the x-limits will be10 ^ par("usr")[1:2]. Similarly for the y-axis.xaxpA vector of the form
c(x1, x2, n)giving the coordinates of the extreme tick marks and the number of intervals between tick-marks whenpar("xlog")is false. Otherwise, when log coordinates are active, the three values have a different meaning: For a small range,nis negative, and the ticks are as in the linear case, otherwise,nis in1:3, specifying a case number, andx1andx2are the lowest and highest power of 10 inside the user coordinates,10 ^ par("usr")[1:2]. (The"usr"coordinates are log10-transformed here!)- n=1
will produce tick marks at
10^jfor integerj,- n=2
gives marks
k 10^jwithk \in \{1, 5\},- n=3
gives marks
k 10^jwithk \in \{1, 2, 5\}.
See
axTicks()for a pure R implementation of this.xaxsThe style of axis interval calculation to be used for the x-axis. Possible values are
"r","i","e","s","d". The styles are generally controlled by the range of data orxlim, if given. Style"r"(regular) first extends the data range by 4 percent and then finds an axis with pretty labels that fits within the range. Style"i"(internal) just finds an axis with pretty labels that fits within the original data range. Style"s"(standard) finds an axis with pretty labels within which the original data range fits. Style"e"(extended) is like style"s", except that it is also ensured that there is room for plotting symbols within the bounding box. Style"d"(direct) specifies that the current axis should be used on subsequent plots. (Only"r"and"i"styles are currently implemented)xaxtA character which specifies the axis type. Specifying
"n"causes an axis to be set up, but not plotted. The standard value is"s": for compatibility with S values"l"and"e"are accepted but are equivalent to"s".xloglogical value (see
loginplot.default). IfTRUE, a logarithmic scale is in use (e.g., afterplot(*, log = "x")). For a new device, it defaults toFALSE, i.e., linear scale.xpdA logical value or
NA. IfFALSE, all plotting is clipped to the plot region, ifTRUE, all plotting is clipped to the figure region, and ifNA, all plotting is clipped to the device region.yaxpA vector of the form
c(y1, y2, n)giving the coordinates of the extreme tick marks and the number of intervals between tick-marks unless for log coordinates, seexaxpabove.yaxsThe style of axis interval calculation to be used for the y-axis. See
xaxsabove.yaxtA character which specifies the axis type. Specifying
"n"causes an axis to be set up, but not plotted.yloga logical value; see
xlogabove.
Color Specification
Colors can be specified in several different ways. The simplest way is
with a character string giving the color name (e.g., "red"). A
list of the possible colors can be obtained with the function
colors. Alternatively, colors can be specified directly in
terms of their RGB components with a string of the form "#RRGGBB"
where each of the pairs RR, GG, BB consist of two
hexadecimal digits giving a value in the range 00 to FF.
Colors can also be specified by giving an index into a small table of
colors, the palette. This provides compatibility with
S. Index 0 corresponds to the background color.
Additionally, "transparent" or (integer) NA is
transparent, useful for filled areas (such as the background!),
and just invisible for things like lines or text.
The functions rgb, hsv, gray and rainbow
provide additional ways of generating colors.
Line Type Specification
Line types can either be specified by giving an index into a small
built in table of line types (1 = solid, 2 = dashed, etc, see
lty above) or directly as the lengths of on/off stretches of
line. This is done with a string of an even number (up to eight)
of characters, namely non-zero
(hexadecimal) digits which give the lengths in consecutive positions
in the string. For example, the string "33" specifies three
units on followed by three off and "3313" specifies three units
on followed by three off followed by one on and finally three off.
The ‘units’ here are (on most devices) proportional to
lwd, and with lwd = 1 are in pixels or points.
The five standard dash-dot line types (lty = 2:6) correspond to
c("44", "13", "1343", "73", "2262").
Note that NA is not a valid value for lty.
Note
The effect of restoring all the (settable) graphics parameters as
in the examples is hard to predict if the device has been resized.
Several of them are attempting to set the same things in different
ways, and those last in the alphabet will win. In particular, the
settings of mai, mar, pin, plt and
pty interact, as do the outer margin settings, the figure
layout and figure region size.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth \& Brooks/Cole.
See Also
plot.default for some high-level plotting parameters;
colors, gray, rainbow,
rgb;
options for other setup parameters;
graphic devices x11, postscript and
setting up device regions by layout and
split.screen.
Examples
op <- par(mfrow = c(2, 2), # 2 x 2 pictures on one plot
pty = "s") # square plotting region,
# independent of device size
## At end of plotting, reset to previous settings:
par(op)
## Alternatively,
op <- par(no.readonly = TRUE) # the whole list of settable par's.
## do lots of plotting and par(.) calls, then reset:
par(op)
par("ylog") # FALSE
plot(1 : 12, log = "y")
par("ylog") # TRUE
plot(1:2, xaxs = "i") # 'inner axis' w/o extra space
stopifnot(par("xaxp")[1:2] == 1:2 &&
par("usr") [1:2] == 1:2)
( nr.prof <-
c(prof.pilots=16,lawyers=11,farmers=10,salesmen=9,physicians=9,
mechanics=6,policemen=6,managers=6,engineers=5,teachers=4,
housewives=3,students=3,armed.forces=1))
par(las = 3)
barplot(rbind(nr.prof)) # R 0.63.2: shows alignment problem
par(las = 0)# reset to default
## 'fg' use:
plot(1:12, type = "b", main="'fg' : axes, ticks and box in gray",
fg = gray(0.7), bty="7" , sub=R.version.string)
ex <- function() {
old.par <- par(no.readonly = TRUE) # all par settings which
# could be changed.
on.exit(par(old.par))
## ...
## ... do lots of par() settings and plots
## ...
invisible() #-- now, par(old.par) will be executed
}
ex()