1
일반 세그먼트를 플롯에 추가하는 add_TA
형식의 간단한 함수를 작성하려고합니다. 이 함수는 N x 4 매트릭스를받습니다. 행렬의 각 행은 세그먼트입니다.그래프를 quantmod에 추가하는 일반 함수
나는 내 필요에 행운을 빕니다 add_SMA
을 수정하려고했습니다.
add_Segments <- function (segs , ...)
{
lenv <- new.env()
lenv$add_segments <- function(segs , ...) {
segments(segs[,1] , segs[,2] , segs[,3] , segs[,4] , ...)
}
mapply(function(name, value) {
assign(name, value, envir = lenv)
}, names(list(segs = segs , ...)), list(segs = segs, ...))
plot_object <- current.chob()
lenv$xdata <- segs
plot_object$set_frame(2)
exp <- parse(text = "add_segments(segs = segs , ...)")
plot_object$add(exp, env = c(lenv, plot_object$Env), expr = TRUE)
plot_object
}
이것은 내가 lenv
에 xdata
을 설정할 때 그래도 난 내가 그 돌을 모금
Error in plot.window(c(1, 1658), c(NaN, NaN)) : need finite 'ylim' values
실패하지만 난하지 않았다 같아요.
결과를 설명하고 segments
이 제대로 작동하는 재현 가능한 예입니다.
require(quantmod)
s <- get(getSymbols('MSFT'))["2012"]
chart_Series(s)
segs <- matrix(c(183,31.61,213,30.20,221,26.34,233,26.26) , byrow = T , nrow = 2)
segments(segs[,1] , segs[,2] , segs[,3] , segs[,4] , col = 'red')
이유 내가 add_TA
형식을 사용하여 (바로 위의 예제와 같이 그리기되지 않음)하고있어 내가 추가 지표를 추가 할 내가 세그먼트가 플롯 객체 새로 고침 후 그래프에 있고 싶어한다는 것입니다.
감사합니다. @Joshua. 그레이트. 한가지는 - 나는'add_Series' 나'add_TA (.., type = 'l')'로는 작동하지 않을 것입니다. 라인이 플롯에서 그려지는 유일한 방법은'add_TA (x, type = 'p')'를 사용할 때입니다. 왜 그런지 알 겠어? – haki
안녕하세요 @ 여호수아, 방금 2007 년에서 2013 년까지 매일의 시계열을 통해 43 줄의 기능을 테스트했습니다. 완료하려면 +30 초가 걸렸습니다. 나는 병합을 추측하고있다. 그리고 근사치는 많은 시간을 소비한다. 이 경우 불필요하기 때문에 기존 인터페이스를 사용할 수 있도록 사용하고 있습니다. 시리즈가 아닌 세그먼트를 사용하는 방법을 생각할 수 있습니까? – haki
@ 하키 : "작동하지 못한다"는 것은 무엇을 의미합니까? 그것은 나를 위해 작동합니다. 필자는 필자의 답에서와 같이 함수를 호출 할 때마다 43 줄의 시간이 오래 걸리는 이유가 있기 때문에 모든 함수 호출 후에 줄거리가 다시 그려진다. 모든'add_Series' 호출을'chart_Series'의'TA ='인수에 넣으십시오. 예 : 'chart_Series (s, TA = "add_Series (...); add_Series (...); ...")'. –