2013-03-13 5 views
12

특정 그래프의 여러 날짜에 세로선을 추가하고 싶습니다. 지금까지 나는이 간단한 작업을 달성하지 못했습니다. 이미 여기 읽은 내용에서quantmod :: chart_Series에 수직선 추가

> s <- get(getSymbols('nvmi'))["2012::"] 
> d1 <- index(s[100]) 
> d1 
[1] "2012-05-24" 

> chart_Series(s,TA="addLines(v=d1)") 
Error in get.current.chob() : improperly set or missing graphics device 

> chart_Series(s) 
> abline(v=d1) 
# nothing 

> add_TA("addLines(v=d1") 
Error in `[.data.frame`(lenv$xdata, Env$xsubset) : 
    undefined columns selected 

, 나는 abline이 새로운 chart_Series 기능이 작동 안되는 것을 알고 : 이것은 내가 뭘하려합니다. 어쨌든 작동하지 않는 것 같습니다. addLines 함수는 내가 시도한 형식 중 하나에서 작동하지 않습니다 - 일반 addLines, plot(addLines(...)), chart_Series(..., TA="addLines(...)") 또는 add_TA("addLines(...)").

이전 버전에서 가지고 있던 다른 문제가 해결 되었기 때문에 실험용 버전의 quantumod를 사용해야합니다. d1은 결국 날짜 목록이됩니다.

답변

13

퀀텀의 차트 기능의 이전 버전과 새 버전의 기능을 함께 사용할 수 없습니다. addLines을 사용하려면 chartSeries을 사용해야합니다. addLineschartSeries을 사용하는 경우에도 d1은 datetime 객체가 아닌 xts 객체 여야합니다. 예를 들면 : 당신이 chart_Series를 사용하여 수직선을 추가하려면

library(quantmod) 
data(sample_matrix) 
s <- as.xts(sample_matrix) 
chartSeries(s,TA="addLines(v=s[100])") 

quantmod::chartSeries

는 논리적 XTS는 달리 선이 표시 할 및 FALSETRUE 값으로 개체를 만들 수 있습니다. 예를 들어 :

l <- xts(!as.logical(s[,1]),index(s)) 
l[100] <- TRUE 
chart_Series(s,TA="add_TA(l,on=1)") 

quantmod::chart_Series

또한 당신이 add_TA 호출 on=-1를 사용하여 차트 "뒤에"수직 라인을 넣을 수 있습니다 :

chart_Series(s,TA="add_TA(l,on=-1,col='grey',border='grey')") 
+0

하지만 당신은 여기에 수직선을 추가 수평이 아닌가? – agstudy

+0

@agstudy : 예, OP 제목에 오타가 있다고 가정합니다. 날짜가 x 축에 있기 때문에 특정 날짜에 가로선을 어떻게 추가 할 수 있는지 알 수 없습니다. –

+0

확인. 감사합니다 + 1. 나는 논리를 보았고, 우리는 시간 계열 (여기서는 xts 객체) 만 겹쳐 씁니다. 그렇지 않으면 "감각"이 없습니다. – agstudy