Matplot

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 呼叫,然后再进行三次 t​​ihuan3 或 lines 呼叫。

plot(xmat[,1], type = 'l')
lines(xmat[,2], col = 'red')
lines(xmat[,3], col = 'green')
lines(xmat[,4], col = 'blue')

StackOverflow 文档

然而,这既繁琐又引起问题,因为除其他外,默认情况下,轴限制由 plot 固定以仅适合第一列。

在这种情况下更方便的是使用 matplot 功能,该功能仅需要一次调用并自动处理轴限制改变每列的美感以使它们可区分。

matplot(xmat, type = 'l')

StackOverflow 文档

请注意,默认情况下,matplot 会改变颜色(col)和 linetype(lty),因为这会在重复之前增加可能的组合数量。但是,这些美学中的任何一个(或两个)都可以固定为单一的价值……

matplot(xmat, type = 'l', col = 'black')

StackOverflow 文档

…或自定义向量(将按照标准 R 向量回收规则循环到列数)。

matplot(xmat, type = 'l', col = c('red', 'green', 'blue', 'orange'))

StackOverflow 文档

标准图形参数,包括 mainxlabxmin,与 plot 的工作方式完全相同。有关这些的更多信息,请参阅 ?par

plot 一样,如果只给出一个对象,matplot 假定它是 y 变量并使用 x 的索引。但是,可以明确指定 xy

matplot(x = seq(0, 10, length.out = 100), y = xmat, type='l')

StackOverflow 文档

实际上,xy 都可以是矩阵。

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

StackOverflow 文档