?par
解释了lty
可以指定为交替绘制/跳过的线段长度的向量。
例如c(1,3,1,1)
看起来像这样:
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
但是如果我尝试将lty=c(1,3,1,1)
传递给matplot
(或者我使用par
预设它),那么matplot
会假设我想循环使用样式1(实体),样式3(虚线),样式1(实心),样式1(实体),产生此
────────────────────────────────────────────────────────────────────────────
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────
而不是
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
如何让matplot
明白它应该将整个矢量解释为一种风格?
答案 0 :(得分:4)
因此?par
实际上应该将自定义行类型指定为字符,其中包含偶数个元素,例如"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])
以便它使用[[
而不是[
来选择适当的lty
值。然后,您可以将值列表传递给lty
,每个值都将被正确解释。