Перепутанные панели после plot.zoo (несколько) и par (new = T) - PullRequest
0 голосов
/ 02 октября 2018

Я создал график из шести панелей с plot.zoo и очистил мои графические настройки с помощью par (new = T).Я ожидал, что следующий сюжет из шести панелей будет «сверху» другого.Первая панель, однако, отсутствует (все еще на старом графике), отображаются только 2-6 (но не в той позиции).Что еще мне нужно сбросить в дополнение к номиналу (new = T)?

> require(PerformanceAnalytics) 
> data('managers') 
> managers <- managers[,c('HAM1','HAM3','HAM4','SP500 TR','US 10Y TR','US 3m TR')]
> plot.zoo(managers) 
> par(new = T) 
> plot.zoo(managers*1.1, col='red')

1 Ответ

0 голосов
/ 03 октября 2018

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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...