matplot | R Documentation |
Plot the columns of one matrix against the columns of another (which often is just a vector treated as 1-column matrix).
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 |
type |
character string (length 1 vector) or vector of 1-character
strings indicating the type of plot for each
column of |
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 |
col |
vector of colors. Colors are used cyclically. |
cex |
vector of character expansion sizes, used cyclically.
This works as a multiple of |
bg |
vector of background (fill) colors for the open plot
symbols given by |
xlab, ylab |
titles for x and y axes, as in |
xlim, ylim |
ranges of x and y axes, as in |
log, ... |
Graphical parameters (see |
add |
logical. If |
verbose |
logical. If |
matplot(x,y, ..)
is basically a wrapper for
calling (the generic function) plot(x[,1], y[,1], ..)
for the first columns (only if add = TRUE
).
calling (the generic) lines(x[,j], y[,j], ..)
for
subsequent columns.
Since R 4.0.0, care is taken to keep the class(.)
of
x
and y
, such that the corresponding plot()
and
lines()
methods will be called.
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.
Function matplot
generates a new plot;
matpoints
and matlines
add to the current one.
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
plot
, points
, lines
,
matrix
, par
.
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) ## 'x' a "Date" vector : nd <- length(dv <- seq(as.Date("1959-02-21"), by = "weeks", length.out = 100)) mSC <- cbind(I=1, sin=sin(pi*(1:nd)/8), cos=cos(pi*(1:nd)/8)) matplot(dv, mSC, type = "b", main = "matplot(<Date>, y)") ## 'x' a "POSIXct" date-time vector : ct <- seq(c(ISOdate(2000,3,20)), by = "15 mins", length.out = 100) matplot(ct, mSC, type = "b", main = "matplot(<POSIXct>, y)") ## or the same with even more axis flexibility: matplot(ct, mSC, type = "b", main = "matplot(<POSIXct>, y)", xaxt="n") Axis(ct, side=1, at = ct[1+4*(0:24)]) ## Also works for data frame columns: matplot(iris[1:50,1:4])
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.