?par解释lty可以将其指定为交替绘制/跳过的线段长度的向量。
例如c(1,3,1,1)看起来像这样:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试传递lty=c(1,3,1,1)到matplot(或者如果我使用 预设它par),那么matplot假设我想通过样式 1(实心)、样式 3(虚线)、样式 1(实心)、样式 1(实心)循环,结果是
????????????????????????????????????????????????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
而不是这个
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Run Code Online (Sandbox Code Playgroud)
我怎样才能matplot理解它应该将整个向量解释为一种风格?
所以?par实际上说自定义线类型应该指定为character,具有偶数个元素,例如"33".
无论如何,matplot不会将其与普通整数规范混合处理,因为它已将参数“选择”lty为向量,每行一个值。
您可以传递matplot一个字符向量并lty手动指定每个向量,例如像lty = c("44","22","33","3322"). 或者您可以matplot通过将最后几行更改为以下内容来创建自己的版本:
if (!add) {
ii <- ii[-1L]
plot(x[, 1L], y[, 1L], type = type[1L], xlab = xlab,
ylab = ylab, xlim = xlim, ylim = ylim, lty = lty[[1L]],
lwd = lwd[1L], lend = lend[1L], pch = pch[1L], col = col[1L],
cex = cex[1L], bg = bg[1L], ...)
}
for (i in ii) lines(x[, i], y[, i], type = type[i], lty = lty[[i]],
lwd = lwd[i], lend = lend[i], pch = pch[i], col = col[i],
cex = cex[i], bg = bg[i])
Run Code Online (Sandbox Code Playgroud)
以便它使用[[而不是[选择适当的lty值。然后你可以传递一个值列表,lty每个值都会被正确解释。