matplot 对于在同一图形上快速绘制来自同一对象(尤其是来自矩阵)的多组观测值很有用。
这是一个矩阵的示例,其中包含四组随机抽取,每组均具有不同的均值。
xmat <- cbind(rnorm(100, -3), rnorm(100, -1), rnorm(100, 1), rnorm(100, 3)) head(xmat) # [,1] [,2] [,3] [,4] # [1,] -3.072793 -2.53111494 0.6168063 3.780465 # [2,] -3.702545 -1.42789347 -0.2197196 2.478416 # [3,] -2.890698 -1.88476126 1.9586467 5.268474 # [4,] -3.431133 -2.02626870 1.1153643 3.170689 # [5,] -4.532925 0.02164187 0.9783948 3.162121 # [6,] -2.169391 -1.42699116 0.3214854 4.480305
将所有这些观察结果绘制在同一张图表上的一种方法是进行一次plot调用,然后再进行三个points或多个lines调用。
plot(xmat[,1], type = 'l') lines(xmat[,2], col = 'red') lines(xmat[,3], col = 'green') lines(xmat[,4], col = 'blue')
但是,这既繁琐又会引起问题,因为除其他外,默认情况下会固定轴限制plot以仅适合第一列。
在这种情况下,使用该matplot功能更为方便,该功能仅需调用一次即可自动处理轴限制并更改每列的外观以使其可区分。
matplot(xmat, type = 'l')
请注意,默认情况下,matplot同时更改颜色(col)和线型(lty),因为这会增加重复之前可能的组合数量。但是,这些美学中的任何(或两者)都可以固定为单个值...
matplot(xmat, type = 'l', col = 'black')
...或自定义向量(遵循标准R向量循环规则,将循环到列数)。
matplot(xmat, type = 'l', col = c('red', 'green', 'blue', 'orange'))
标准图形参数(包括main,,xlab)的xmin工作方式与完全相同plot。有关更多信息,请参见?par。
就像plot,如果仅给出一个对象,则matplot假定它是y变量,并使用的索引x。然而,x和y可以明确指定。
matplot(x = seq(0, 10,length.out= 100), y = xmat, type='l')
实际上,x和y都可以是矩阵。
xes <- cbind(seq(0, 10,length.out= 100), seq(2.5, 12.5,length.out= 100), seq(5, 15,length.out= 100), seq(7.5, 17.5,length.out= 100)) matplot(x = xes, y = xmat, type = 'l')