R: Add Text to a Plot

text {graphics} | R Documentation

## Add Text to a Plot

### Description

`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.

### Usage

    text(x, ...)

    ## Default S3 method:
     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 of `x` and `y` 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`. If `labels` is longer than `x` and `y`, the coordinates are recycled to the length of `labels`.
`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 of `1`, `2`, `3` and `4`, 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 if `labels` is an expression.
`cex` | numeric character expansion factor; multiplied by `par("cex")` yields the final character size. `NULL` and `NA` are equivalent to `1.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 in `par()`.
`...` | further graphical parameters (from `par`), such as `srt`, `family` and `xpd`.

### 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.

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`.

### 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

    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)")

[Package graphics version 3.1.2 Index]