Добавить вертикальные линии в 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
не работает ни в одной из форм, которые я пробовал - plain addLines
, plot(addLines(...))
, chart_Series(..., TA="addLines(...)")
или add_TA("addLines(...)")
.
Мне нужно использовать экспериментальную версию quantmod, потому что она решила другие проблемы, которые у меня были со старой версией. d1
в конечном итоге будет списком дат.
Ответы
Ответ 1
Вы не можете смешивать функции из старой и новой версий функций построения квантовых точек. Если вы хотите использовать addLines
, вы должны использовать chartSeries
. Даже если вы используете addLines
и chartSeries
, d1
должен быть объектом xts, а не объектом datetime. Например:
library(quantmod)
data(sample_matrix)
s <- as.xts(sample_matrix)
chartSeries(s,TA="addLines(v=s[100])")
![quantmod::chartSeries]()
Если вы хотите добавить вертикальную линию с помощью 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)")
![quantmod::chart_Series]()
Также обратите внимание, что вы можете поместить вертикальную линию позади диаграммы, используя on=-1
в вызове add_TA
:
chart_Series(s,TA="add_TA(l,on=-1,col='grey',border='grey')")