私は株式のペア(ペア取引)の分析を少し開始していますが、ここではグラフを作成するための関数(pairs.report -xtsオブジェクトを使用して点、凡例、およびテキストをプロットに追加
私は1つのプロットに3つの異なる線をプロットする必要があります。私が列挙した関数は、私がやりたいことをしますが、x軸(タイムライン)で細かいカスタマイズが必要な場合は、ちょっとした作業が必要です。そのままで、ティックの書式設定なしで、x軸に年(10年間のデータ)または月(6ヶ月のデータ用)を印刷します。
私はXTSオブジェクトを使用している場合は、私が
plot(xts-object-with-date-asset1-asset2, ...)
代わりの
plot(date, asset2, ...)
を使用している場合、つまり、私はすぐに(グリッドおよびボックスと一緒にきれいにフォーマットx軸を取得)、後でpoints()、text()、lines()などの関数を使ってプロットに追加すると失敗します。私はpoints.xts()とtext.xts()がすぐに出てこないと思います。
私はxtsオブジェクトの利便性を望んでいますが、私はまた、私のプロットに対して細かい制御を必要とします。だから、私の仕事の流れはどのようになるべきですか?基本的なグラフィックスに固執し、すべてのカスタマイズを手動で行う必要がありますか?それとも、xtsを私のために働かせる方法はありますか?
私はlatticeとggplot2を認識していますが、今は使用したくありません。ここで私が述べた関数である(いずれの批判は/コードの改善のための提案を歓迎している) -
library(xts)
pairs.report <- function(asset1, asset2, dataset) {
#create data structures
attach(dataset)
datasetlm <- lm(formula = asset1 ~ asset2 + 0, data = dataset)
beta = coef(datasetlm)[1]
#add extra space to right margin of plot within frame
par(mar=c(5, 4, 4, 4) + 0.1)
# Plot first set of data and draw its axis
ylim <- c(min(asset2,asset1), max(asset2,asset1))
plot(date,
asset2,
axes=T,
ylim=ylim,
xlab="Timeline",
ylab="asset2 and asset1 equity",
type="l",
col="red",
main="Comparison between asset2 and asset1")
lines(date, asset1, col="green")
box()
grid(lwd=3)
# Allow a second plot on the same graph
par(new=T)
# Plot the second plot and
ylim <- c(min(asset1-beta*asset2), max(asset1-beta*asset2))
plot(date,
asset1-beta*asset2,
xlab="", ylab="",
ylim=ylim,
axes=F,
type="l",
col="blue")
#put axis scale on right
axis(side=4,
ylim=ylim,
col="blue",
col.axis="blue")
mtext("Residual Spread",side=4,col="blue",line=2.5)
abline(h=mean(asset1-beta*asset2))
}
多分このスレッドの自分自身の質問に対する私の答えはあなたにも役立ちます: http://stackoverflow.com/questions/7009711/how-to-get-years-from-a-time-series-index-when -the-underlying-time-series-of-m 少なくとも10年以上のスパン以外のタイムパンを取得する必要があります。もちろん、ダニでも同じことが働きます。 –
'plot.zoo'はxtsオブジェクトと連携し、より細かい制御を提供します。 '?plot.zoo'にはたくさんの例があります。 –