grDevices (version 3.6.2)

# xy.coords: Extracting Plotting Structures

## Description

`xy.coords` is used by many functions to obtain x and y coordinates for plotting. The use of this common mechanism across all relevant R functions produces a measure of consistency.

## Usage

```xy.coords(x, y = NULL, xlab = NULL, ylab = NULL, log = NULL,
recycle = FALSE, setLab = TRUE)```

## Arguments

x, y

the x and y coordinates of a set of points. Alternatively, a single argument `x` can be provided.

xlab, ylab

names for the x and y variables to be extracted.

log

character, `"x"`, `"y"` or both, as for `plot`. Sets negative values to `NA` and gives a warning.

recycle

logical; if `TRUE`, recycle (`rep`) the shorter of `x` or `y` if their lengths differ.

setLab

logical indicating if the resulting `xlab` and `ylab` should be constructed from the “kind” of `(x,y)`; otherwise, the arguments `xlab` and `ylab` are used.

## Value

A list with the components

x

numeric (i.e., `"double"`) vector of abscissa values.

y

numeric vector of the same length as `x`.

xlab

`character(1)` or `NULL`, the ‘label’ of `x`.

ylab

`character(1)` or `NULL`, the ‘label’ of `y`.

## Details

An attempt is made to interpret the arguments `x` and `y` in a way suitable for bivariate plotting (or other bivariate procedures).

If `y` is `NULL` and `x` is a

formula:

of the form `yvar ~ xvar`. `xvar` and `yvar` are used as x and y variables.

list:

containing components `x` and `y`, these are used to define plotting coordinates.

time series:

the x values are taken to be `time(x)` and the y values to be the time series.

matrix or `data.frame` with two or more columns:

the first is assumed to contain the x values and the second the y values. Note that is also true if `x` has columns named `"x"` and `"y"`; these names will be irrelevant here.

In any other case, the `x` argument is coerced to a vector and returned as y component where the resulting `x` is just the index vector `1:n`. In this case, the resulting `xlab` component is set to `"Index"` (if `setLab` is true as by default).

If `x` (after transformation as above) inherits from class `"POSIXt"` it is coerced to class `"POSIXct"`.

`plot.default`, `lines`, `points` and `lowess` are examples of functions which use this mechanism.

## Examples

Run this code
```# NOT RUN {
ff <- stats::fft(1:9)
xy.coords(ff)
xy.coords(ff, xlab = "fft") # labels "Re(fft)",  "Im(fft)"
# }
# NOT RUN {
<!-- % dont -->
# }
# NOT RUN {
with(cars, xy.coords(dist ~ speed, NULL)\$xlab ) # = "speed"

xy.coords(1:3, 1:2, recycle = TRUE) # otherwise error "lengths differ"
xy.coords(-2:10, log = "y")
##> xlab: "Index"  \\  warning: 3 y values <= 0 omitted ..
# }
```

Run the code above in your browser using DataCamp Workspace