我想在某个图表上的几个日期添加垂直线条.到目前为止,我还没有完成这项简单的任务.这是我试过的:
> 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
Run Code Online (Sandbox Code Playgroud)
根据我在这里已经阅读的内容,我知道abline不应该使用新chart_Series功能.它似乎无论如何都不起作用.该addLines功能并没有任何的我试过的形式工作-平原addLines,plot(addLines(...)),chart_Series(..., TA="addLines(...)") 或add_TA("addLines(...)").
我需要使用quantmod的实验版本,因为它解决了旧版本的其他问题.d1最终会是一个日期列表.
Jos*_*ich 14
您无法混合新版本的quantmod图表功能中的功能.如果你想使用addLines,你必须使用chartSeries.即使你使用addLines和chartSeries,d1应该是一个xts对象,也不是一个datetime对象.例如:
library(quantmod)
data(sample_matrix)
s <- as.xts(sample_matrix)
chartSeries(s,TA="addLines(v=s[100])")
Run Code Online (Sandbox Code Playgroud)

如果要使用添加垂直线chart_Series,请创建一个逻辑xts对象,TRUE其中包含要显示线条的值,FALSE否则.例如:
l <- xts(!as.logical(s[,1]),index(s))
l[100] <- TRUE
chart_Series(s,TA="add_TA(l,on=1)")
Run Code Online (Sandbox Code Playgroud)

另请注意,您可以通过on=-1在add_TA调用中使用垂直线"在图表后面" :
chart_Series(s,TA="add_TA(l,on=-1,col='grey',border='grey')")
Run Code Online (Sandbox Code Playgroud)