我正在尝试以add_TA
将一般段添加到绘图的格式编写一个简单的函数。该函数将接收一个 N × 4 矩阵。矩阵中的每一行都是一个段。
我试过修改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
}
这失败了
Error in plot.window(c(1, 1658), c(NaN, NaN)) : need finite 'ylim' values
我虽然在我开始的时候会注意这一点xdata
,lenv
但我想我没有。
这是一个可重现的示例,说明了结果并且可以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
格式(而不仅仅是像上面的示例中那样绘制)的原因是我想添加其他指标,并且我希望在绘图对象刷新后这些段保留在图表上。