matplot               package:graphics               R Documentation

Plot Columns of Matrices

Description:

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

Usage:

     matplot(x, y, type = "p", lty = 1:5, lwd = 1, pch = NULL,
             col = 1:6, cex = NULL, bg = NA,
             xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL,
             ..., 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, ...)

Arguments:

     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: vector of line types and widths. 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: vector of background (fill) colors for the open plot symbols
          given by 'pch=21:25' as in 'points'.  The default 'NA'
          corresponds to the one of the underlying function 'plot.xy'.

xlab, ylab: titles for x and y axes, as in 'plot'.

xlim, ylim: ranges of x and y axes, as in 'plot'.

     ...: Graphical parameters (see 'par') and any further arguments of
          'plot', typically 'plot.default', may also be supplied as
          arguments to this function.  Hence, the high-level graphics
          control arguments described under 'par' and the arguments to
          'title' may be supplied to this function.

     add: logical.  If 'TRUE', plots are added to current one, using
          'points' and 'lines'.

 verbose: logical.  If 'TRUE', write one line of what is done.

Details:

     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.

Side Effects:

     Function 'matplot' generates a new plot; 'matpoints' and
     'matlines' add to the current one.

References:

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

See Also:

     'plot', 'points', 'lines', 'matrix', 'par'.

Examples:

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

     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 = .8, end = .1),
             sub = paste(c("S", "C", "V"), dimnames(iris.S)[[3]],
                         sep = "=", collapse= ",  "),
             main = "Fisher's Iris Data")
     par(op)

