Plot the columns of one matrix against the columns of another.

```
matplot(x, y, type = "p", lty = 1:5, lwd = 1, lend = par("lend"),
pch = NULL,
col = 1:6, cex = NULL, bg = NA,
xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL,
log = "", …, add = FALSE, verbose = getOption("verbose"))
```matpoints(x, y, type = "p", lty = 1:5, lwd = 1, pch = NULL,
col = 1:6, …)

matlines (x, y, type = "l", lty = 1:5, lwd = 1, pch = NULL,
col = 1:6, …)

x,y

vectors or matrices of data for plotting. The number of
rows should match. If one of them are missing, the other is taken
as `y`

and an `x`

vector of `1:n`

is used.
Missing values (`NA`

s) are allowed.

type

character string (length 1 vector) or vector of 1-character
strings indicating the type of plot for each
column of `y`

, see `plot`

for all possible
`type`

s. The first character of `type`

defines the first plot, the second character the second, etc.
Characters in `type`

are cycled through; e.g., `"pl"`

alternately plots points and lines.

lty,lwd,lend

vector of line types, widths, and end styles. The first element is for the first column, the second element for the second column, etc., even if lines are not plotted for all columns. Line types will be used cyclically until all plots are drawn.

pch

character string or vector of 1-characters or integers for
plotting characters, see `points`

.
The first character is the plotting-character for the first plot,
the second for the second, etc. The default is the digits (1
through 9, 0) then the lowercase and uppercase letters.

col

vector of colors. Colors are used cyclically.

cex

vector of character expansion sizes, used cyclically.
This works as a multiple of `par("cex")`

. `NULL`

is
equivalent to `1.0`

.

bg

xlab, ylab

titles for x and y axes, as in `plot`

.

xlim, ylim

ranges of x and y axes, as in `plot`

.

log, …

Graphical parameters (see `par`

) and any further
arguments of `plot`

, typically `plot.default`

, may also be
supplied as arguments to this function; even `panel.first`

etc
now work. Hence, the high-level
graphics control arguments described under `par`

and the
arguments to `title`

may be supplied to this function.

verbose

logical. If `TRUE`

, write one line of what is
done.

Function `matplot`

generates a new plot;
`matpoints`

and `matlines`

add to the current one.

Points involving missing values are not plotted.

The first column of `x`

is plotted against the first column of
`y`

, the second column of `x`

against the second column of
`y`

, etc. If one matrix has fewer columns, plotting will cycle
back through the columns again. (In particular, either `x`

or
`y`

may be a vector, against which all columns of the other
argument will be plotted.)

The first element of `col, cex, lty, lwd`

is used to plot the axes
as well as the first line.

Because plotting symbols are drawn with lines and because these
functions may be changing the line style, you should probably specify
`lty = 1`

when using plotting symbols.

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
*The New S Language*.
Wadsworth & Brooks/Cole.

# NOT RUN { require(grDevices) matplot((-4:5)^2, main = "Quadratic") # almost identical to plot(*) sines <- outer(1:20, 1:4, function(x, y) sin(x / 20 * pi * y)) matplot(sines, pch = 1:4, type = "o", col = rainbow(ncol(sines))) matplot(sines, type = "b", pch = 21:23, col = 2:5, bg = 2:5, main = "matplot(...., pch = 21:23, bg = 2:5)") x <- 0:50/50 matplot(x, outer(x, 1:8, function(x, k) sin(k*pi * x)), ylim = c(-2,2), type = "plobcsSh", main= "matplot(,type = \"plobcsSh\" )") ## pch & type = vector of 1-chars : matplot(x, outer(x, 1:4, function(x, k) sin(k*pi * x)), pch = letters[1:4], type = c("b","p","o")) lends <- c("round","butt","square") matplot(matrix(1:12, 4), type="c", lty=1, lwd=10, lend=lends) text(cbind(2.5, 2*c(1,3,5)-.4), lends, col= 1:3, cex = 1.5) table(iris$Species) # is data.frame with 'Species' factor iS <- iris$Species == "setosa" iV <- iris$Species == "versicolor" op <- par(bg = "bisque") matplot(c(1, 8), c(0, 4.5), type = "n", xlab = "Length", ylab = "Width", main = "Petal and Sepal Dimensions in Iris Blossoms") matpoints(iris[iS,c(1,3)], iris[iS,c(2,4)], pch = "sS", col = c(2,4)) matpoints(iris[iV,c(1,3)], iris[iV,c(2,4)], pch = "vV", col = c(2,4)) legend(1, 4, c(" Setosa Petals", " Setosa Sepals", "Versicolor Petals", "Versicolor Sepals"), pch = "sSvV", col = rep(c(2,4), 2)) nam.var <- colnames(iris)[-5] nam.spec <- as.character(iris[1+50*0:2, "Species"]) iris.S <- array(NA, dim = c(50,4,3), dimnames = list(NULL, nam.var, nam.spec)) for(i in 1:3) iris.S[,,i] <- data.matrix(iris[1:50+50*(i-1), -5]) matplot(iris.S[, "Petal.Length",], iris.S[, "Petal.Width",], pch = "SCV", col = rainbow(3, start = 0.8, end = 0.1), sub = paste(c("S", "C", "V"), dimnames(iris.S)[[3]], sep = "=", collapse= ", "), main = "Fisher's Iris Data") par(op) # }