4

私は広範囲にグーグルで検索しましたが、まだ答えが見つからないので、これが冗長でないことを願っています. 日中のデータをプロットしていて、特定の時点に垂直線を配置したいと考えています。関数 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

コード:

#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))

最終的には、2010-12-29 00:11:00 の垂直線が必要な場所に表示されますが、グラフに重ねられるのではなく、グラフの下の新しいセクションに配置されます。何か案は?

4

1 に答える 1

5

onに引数として渡してxtsいますが、に渡す必要がありますaddTA

私はあなたがこれをしているつもりだと思います:

addTA(xts(TRUE,as.POSIXlt("2010-12-29 00:11:00",tz="GMT")),on=1)

とはいえ、あなたのサンプルデータではまだうまくいきません。ただし、行を新しいパネルに配置することを除いて、実際のデータで機能する場合、これは機能し、新しいパネルは開かないはずです。

私のqmaoパッケージには、本質的に同じaddVLine機能があります。


編集

括弧のタイプミスは別として、xts オブジェクトをaddTA機能させるには、列名も必要です (少なくともこの場合はとにかく)。また、チャートに存在する x 値を指定する必要があります (つまり、11:00 ではなく 11:04)。

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]))

編集 2

おそらくより良いアプローチは、addLines関数を使用することです

addLines(v=7)

または、時間がわかっているが行番号がわからない場合は、これを行うことができます

addLines(v=which(index(dataxts) == as.POSIXlt("2010-12-29 00:11:04", tz="GMT")))

を与える

ここに画像の説明を入力

于 2013-02-16T05:14:52.310 に答える