text
Add Text to a Plot
text
draws the strings given in the vector labels
at the
coordinates given by x
and y
.
y
may be missing since xy.coords(x, y)
is used for
construction of the coordinates.
- Keywords
- aplot
Usage
text(x, ...)
"text" (x, y = NULL, labels = seq_along(x), adj = NULL, pos = NULL, offset = 0.5, vfont = NULL, cex = 1, col = NULL, font = NULL, ...)
Arguments
- x, y
- numeric vectors of coordinates where the text
labels
should be written. If the length ofx
andy
differs, the shorter one is recycled. - labels
- a character vector or expression specifying
the text to be written. An attempt is made to coerce other
language objects (names and calls) to expressions, and vectors and
other classed objects to character vectors by
as.character
. Iflabels
is longer thanx
andy
, the coordinates are recycled to the length oflabels
. - adj
- one or two values in $[0, 1]$ which specify the x (and optionally y) adjustment of the labels. On most devices values outside that interval will also work.
- pos
- a position specifier for the text. If specified this
overrides any
adj
value given. Values of1
,2
,3
and4
, respectively indicate positions below, to the left of, above and to the right of the specified coordinates. - offset
- when
pos
is specified, this value gives the offset of the label from the specified coordinate in fractions of a character width. - vfont
NULL
for the current font family, or a character vector of length 2 for Hershey vector fonts. The first element of the vector selects a typeface and the second element selects a style. Ignored iflabels
is an expression.- cex
- numeric character expansion factor; multiplied
by
par("cex")
yields the final character size.NULL
andNA
are equivalent to1.0
. - col, font
- the color and (if
vfont = NULL
) font to be used, possibly vectors. These default to the values of the global graphical parameters inpar()
. - ...
- further graphical parameters (from
par
), such assrt
,family
andxpd
.
Details
labels
must be of type character
or
expression
(or be coercible to such a type).
In the latter case, quite a bit of
mathematical notation is available such as sub- and superscripts,
greek letters, fractions, etc.
adj
allows adjustment of the text with respect to
(x, y)
.
Values of 0, 0.5, and 1 specify left/bottom, middle and
right/top alignment, respectively. The default is for centered text, i.e.,
adj = c(0.5, NA)
. Accurate vertical centering needs
character metric information on individual characters which is
only available on some devices. Vertical alignment is done slightly
differently for character strings and for expressions:
adj = c(0,0)
means to left-justify and to align on the baseline
for strings but on the bottom of the bounding box for expressions.
This also affects vertical centering: for strings the centering
excludes any descenders whereas for expressions it includes them.
Using NA
for strings centers them, including descenders.
The pos
and offset
arguments can be used in conjunction
with values returned by identify
to recreate an interactively
labelled plot.
Text can be rotated by using graphical parameters srt
(see par
); this rotates about the centre set by
adj
.
Graphical parameters col
, cex
and font
can be
vectors and will then be applied cyclically to the labels
(and
extra values will be ignored). NA
values of font
are
replaced by par("font")
, and similarly for col
.
Labels whose x
, y
or labels
value is NA
are omitted from the plot.
What happens when font = 5
(the symbol font) is selected can be
both device- and locale-dependent. Most often labels
will be
interpreted in the Adobe symbol encoding, so e.g. "d"
is delta,
and "\300"
is aleph.
Euro symbol
The Euro symbol was introduced relatively recently and may not be
available in older fonts. In recent versions of Adobe symbol fonts it
is character 160, so text(x, y, "\xA0", font = 5)
may work.
People using Western European locales on Unix-alikes can probably
select ISO-8895-15 (Latin-9) which has the Euro as character 165: this
can also be used for postscript
and pdf
.
It is \u20ac in Unicode, which can be used in UTF-8 locales.
unix The Euro should be rendered correctly by X11
in UTF-8
locales, but the corresponding single-byte encoding in
postscript
and pdf
will need to be selected
as ISOLatin9.enc
.
windows In all the European Windows encodings the Euro is symbol 128 and
\u20ac will work in all locales: however not all fonts will
include it. It is not in the symbol font used for
windows
and related devices, including the Windows printer.
References
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Murrell, P. (2005) R Graphics. Chapman & Hall/CRC Press.
See Also
text.formula
for the formula method;
mtext
, title
,
Hershey
for details on Hershey vector fonts,
plotmath
for details and more examples on
mathematical annotation.
Examples
library(graphics)
plot(-1:1, -1:1, type = "n", xlab = "Re", ylab = "Im")
K <- 16; text(exp(1i * 2 * pi * (1:K) / K), col = 2)
## The following two examples use latin1 characters: these may not
## appear correctly (or be omitted entirely).
plot(1:10, 1:10, main = "text(...) examples\n~~~~~~~~~~~~~~",
sub = "R is GNU ©, but not ® ...")
mtext("«Latin-1 accented chars»: éè øØ å<Å æ<Æ", side = 3)
points(c(6,2), c(2,1), pch = 3, cex = 4, col = "red")
text(6, 2, "the text is CENTERED around (x,y) = (6,2) by default",
cex = .8)
text(2, 1, "or Left/Bottom - JUSTIFIED at (2,1) by 'adj = c(0,0)'",
adj = c(0,0))
text(4, 9, expression(hat(beta) == (X^t * X)^{-1} * X^t * y))
text(4, 8.4, "expression(hat(beta) == (X^t * X)^{-1} * X^t * y)",
cex = .75)
text(4, 7, expression(bar(x) == sum(frac(x[i], n), i==1, n)))
## Two more latin1 examples
text(5, 10.2,
"Le français, c'est façile: Règles, Liberté, Egalité, Fraternité...")
text(5, 9.8,
"Jetz no chli züritüütsch: (noch ein bißchen Zürcher deutsch)")