我希望这不是多余的,因为我已广泛搜索并仍未找到答案.我正在绘制日内数据,并希望在特定时间点放置一条垂直线.看来我必须使用addTA函数,但它总是在一些奇怪的空白空间中绘制在我的图形下方.这是一些示例代码和数据.谢谢你的帮助.
数据:
date,value
29-DEC-2010:00:02:04.000,99.75
29-DEC-2010:00:03:44.000,99.7578125
29-DEC-2010:00:05:04.000,99.7578125
29-DEC-2010:00:07:53.000,99.7421875
29-DEC-2010:00:07:57.000,99.71875
29-DEC-2010:00:09:20.000,99.7421875
29-DEC-2010:00:11:04.000,99.75
29-DEC-2010:00:12:56.000,99.7421875
29-DEC-2010:00:13:05.000,99.7421875
Run Code Online (Sandbox Code Playgroud)
码:
#set up data
data = read.csv("foo.csv")
values = data[,2]
time = c(strptime(data[,1],format="%d-%b-%Y:%H:%M:%S",tz="GMT"))
dataxts = xts(values, order.by=time,tzone="GMT")
# chart data
chartSeries(dataxts)
# add vertical line - this is where I have no clue what's going on.
addTA(xts(TRUE,as.POSIXlt("2010-12-29 00:11:00",tz="GMT"),on=1))
Run Code Online (Sandbox Code Playgroud)
最终发生的事情是我得到一条我想要的垂直线,2010-12-29 00:11:00,但它位于图表下方的新部分而不是覆盖在它上面.有任何想法吗?
你on作为一个参数传递xts,但你应该传递给它addTA.
我想你的意思是这样做:
addTA(xts(TRUE,as.POSIXlt("2010-12-29 00:11:00",tz="GMT")),on=1)
Run Code Online (Sandbox Code Playgroud)
也就是说,对于我的样本数据,它仍然不起作用.但是,如果您使用的是真实数据,除了它将行放在新面板中,那么这应该可以工作而不是打开一个新面板.
我在qmao包中有一个addVLine函数,它本质上是一样的.
除了带括号的拼写错误之外,xts对象还需要一个列名才能addTA工作(我认为......至少在这种情况下是这样).此外,您必须提供图表上存在的x值(即11:04,而不是11:00)
colnames(dataxts) <- "x"
chartSeries(dataxts)
addTA(xts(TRUE,as.POSIXlt("2010-12-29 00:11:04",tz="GMT")),on=1, col='blue')
# or
# library(qmao)
# addVLine(index(dataxts[7]))
Run Code Online (Sandbox Code Playgroud)
也许更好的方法是使用该addLines功能
addLines(v=7)
Run Code Online (Sandbox Code Playgroud)
或者,如果你知道时间,但不知道行号,你可以这样做
addLines(v=which(index(dataxts) == as.POSIXlt("2010-12-29 00:11:04", tz="GMT")))
Run Code Online (Sandbox Code Playgroud)
这使
