Добавление вертикальных линий к графику plot.ts () в R - PullRequest
4 голосов
/ 07 мая 2011

Я хотел бы добавить вертикальную линию к графику plot.ts():

plot.ts(cbind(a, b, c, d, e, f, g, h),main="Time Series")
a<-seq(1:16);
b<-seq(1:16);
c<-seq(1:16);
d<-seq(1:16);
e<-seq(1:16);
f<-seq(1:16);
g<-seq(1:16);
h<-seq(1:16)

Я попытался abline(v=8.75), но это не поставило линию, на которую я надеялся. Поскольку у меня есть два столбца графиков в графическом окне с этой функцией, мне нужно добавить две вертикальные линии, по одной для каждого столбца графиков. Есть идеи?

1 Ответ

5 голосов
/ 07 мая 2011

Вам необходимо создать функцию панели, которая будет работать внутри каждой панели, которую ts.plot создает для обработки нескольких серий. Необходимо продублировать, как функция lines () обрабатывает аргументы, а также принять аргумент для abline, который затем будет «работать» в локальной системе координат:

?ts.plot
my.ts.panel <- function(x, col = col, bg = bg, pch = pch, type = type,  vpos=8.75, ...){
      lines(x, col = col, bg = bg, pch = pch, type = type, ...)
      abline(v=vpos)}
plot.ts(cbind(a, b, c, d, e, f, g, h),main="Time Series", panel=my.ts.panel)

Это похоже на расширение решеточных функций, за исключением того, что все это делается в базовой графике.

Может быть, лучше оставить настройку vpos в списке аргументов. Тогда у вас будет ручка с внешней стороны, и вам не нужно будет переписывать функцию. (Ваш выбор. Я получал предупреждения от «графической полиции», когда пытался передать его в список аргументов ts.plot.):

vpos=8.75
my.ts.panel <- function(x, col = col, bg = bg, pch = pch, type = type,   ...){
      lines(x, col = col, bg = bg, pch = pch, type = type, ...)
      abline(v=vpos)}
plot.ts(cbind(a, b, c, d, e, f, g, h),main="Time Series", panel=my.ts.panel)
...