當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R matplot 繪製矩陣的列


R語言 matplot 位於 graphics 包(package)。

說明

將一個矩陣的列與另一個矩陣的列(通常隻是被視為 1 列矩陣的向量)進行比較。

用法

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

用於繪圖的數據向量或矩陣。行數應該匹配。如果其中之一缺失,則另一個被視為y,並使用1:nx 向量。允許缺失值 (NA s)。通常,保留xy(例如"Date")的class(.)

type

字符串(長度為 1 的向量)或 1 字符字符串的向量,指示 y 每一列的繪圖類型,請參閱 plot 了解所有可能的 typetype 的第一個字符定義第一個繪圖,第二個字符定義第二個繪圖,依此類推。 type 中的字符循環;例如,"pl" 交替繪製點和線。

lty , lwd , lend

線型、寬度和末端樣式的向量。第一個元素用於第一列,第二個元素用於第二列,依此類推,即使沒有為所有列繪製線條。線型將循環使用,直到繪製完所有圖。

pch

用於繪製字符的字符串或 1 個字符或整數的向量,有關詳細信息,請參閱points。第一個字符是第一個圖的 plotting-character,第二個字符是第二個圖,依此類推。默認為數字(1 到 9、0),然後是小寫和大寫字母。

col

顏色向量。顏色是循環使用的。

cex

字符擴展大小的向量,循環使用。這是 par("cex") 的倍數。 NULL 相當於 1.0

bg

pch = 21:25 給出的開放圖符號的背景(填充)顏色向量,如 points 中。默認 NA 對應於底層函數 plot.xy 之一。

xlab , ylab

x 軸和 y 軸的標題,如 plot 中。

xlim , ylim

x 軸和 y 軸的範圍,如 plot 中。

log , ...

圖形參數(參見 par )和 plot 的任何其他參數(通常是 plot.default )也可以作為參數提供給該函數;甚至 panel.first 等現在也可以工作。因此,par 下說明的高級圖形控製參數和 title 的參數可以提供給該函數。

add

合乎邏輯的。如果 TRUE ,則使用 pointslines 將繪圖添加到當前繪圖。

verbose

合乎邏輯的。如果是TRUE,寫一行所做的事情。

細節

matplot(x,y, ..) 本質上是一個包裝器

  1. 為第一列調用(通用函數)plot(x[,1], y[,1], ..)(僅當 add = TRUE 時)。

  2. 為後續列調用(通用)lines(x[,j], y[,j], ..)

注意保留xyclass(.),以便調用相應的plot()lines()方法。

不繪製涉及缺失值的點。

x 的第一列相對於 y 的第一列繪製,x 的第二列相對於 y 的第二列繪製,依此類推。如果一個矩陣的列數較少,則繪圖將循環返回各列再次。 (特別是,xy 可以是一個向量,將根據該向量繪製另一個參數的所有列。)

col, cex, lty, lwd 的第一個元素用於繪製軸以及第一條線。

由於繪圖符號是用線條繪製的,並且這些函數可能會更改線條樣式,因此在使用繪圖符號時您可能應該指定lty = 1

副作用

函數 matplot 生成一個新圖; matpointsmatlines 添加到當前的值。

例子

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

參考

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

也可以看看

plotpointslinesmatrixpar

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Plot Columns of Matrices。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。