plot.zoo 不支持多面板绘图。通常,它希望您在一次调用中完成所有操作,可能通过指定panel= 函数。
这里有两种方法。请注意,screens 在第一种方法中被回收。
library(PerformanceAnalytics)
library(zoo)
data("managers")
cn <- c('HAM1','HAM3','HAM4','SP500 TR','US 10Y TR','US 3m TR')
managers_z <- as.zoo(managers)
# 1. without a panel function
plot(cbind(managers_z[, cn], 1.1*managers_z[, cn]), screens = seq_along(cn),
col = rep(c("black", "red"), each = length(cn)))
# 2. with a panel function
pnl <- function(x, y, ...) {
lines(y ~ x, ...)
dots <- list(...)
dots$col <- "red"
do.call(lines, c(1.1 * y ~ x, dots))
}
plot(managers_z[, cn], panel = pnl)
另外请注意,如果您想分多次执行此操作,可以使用xyplot.zoo 执行此操作,如下所示:
library(lattice)
xyplot(managers_z[, cn])
for(i in seq_along(cn)) {
trellis.focus("panel", 1, i)
panel.lines(1.1 * managers_z[, cn[i]], col = "red")
trellis.unfocus()
}