13

特定のグラフのいくつかの日付に垂直線を追加したいと思います。これまでのところ、私はこの単純なタスクを達成することができていません。これは私が試したものです:

> 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私が試したどの形式でも機能しません-プレーンaddLines、、、 または。plot(addLines(...))chart_Series(..., TA="addLines(...)")add_TA("addLines(...)")

quantmodの実験バージョンを使用する必要があります。これは、古いバージョンで発生した他の問題を解決したためです。d1最終的には日付のリストになります。

4

2 に答える 2

16

quantmodのチャート関数の新旧バージョンの関数を混在させることはできません。を使用する場合addLinesは、を使用する必要がありますchartSeriesaddLineschartSeriesを使用する場合でもd1、日時オブジェクトではなく、xtsオブジェクトである必要があります。例えば:

library(quantmod)
data(sample_matrix)
s <- as.xts(sample_matrix)
chartSeries(s,TA="addLines(v=s[100])")

quantmod :: chartSeries

を使用して垂直線を追加する場合は、線を表示する場所などに値を使用chart_Seriesして論理xtsオブジェクトを作成します。例えば:TRUEFALSE

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')")
于 2013-03-13T12:16:01.277 に答える
0

私の例で水平線を追加します。

library(quantmod)
library(lubridate)

stockId<-"CVS"
showperiod<-6   # 6 months

stockData<-getSymbols(stockId, src="yahoo",auto.assign=FALSE)

startDate<-Sys.Date()-months(showperiod,abbreviate = FALSE)
fromDate<-paste0(year(startDate),month(startDate))

subset<-paste0(fromDate,"/")

mytheme <- chart_theme() 
mytheme$col$dn.col  <- "firebrick1" 
mytheme$col$up.col  <- "darkgreen"
chart_Series(stockData, name = stockId, subset = subset, theme = mytheme)

#if you add line at 2018-6-18 to 2018-07-16 & y(price)=72
#you need creat new data to plot
#
ntick<-nrow(stockData["20180618/20180716"]) #2018-6-18 to 2018-07-16 tick numbers
getDate<-index(stockData["20180618/20180716"])
y<-rep(72,ntick)
df<-data.frame(getDate,y)
linedata<-xts(df$y,order.by = df$getDate)
# add line
add_TA(linedata,on=-1,col="blue",lwd=2)

ここに画像の説明を入力してください

于 2018-10-18T04:42:27.257 に答える