2011-05-07 98 views
2

圖我想垂直線添加到plot.ts()圖:添加垂直線到plot.ts()中的R

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)但這並沒有放在哪裏我希望行。由於我在圖形窗口中有兩列圖形,使用這個函數,我需要添加兩條垂直線條,每列圖形一條。有任何想法嗎?

回答

3

您需要創建一個面板函數,該面板函數將在ts.plot創建的每個面板中操作以處理多個系列。它需要複製的行()函數處理參數,以及如何接受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)