2011-08-11 11 views
5

私は株式のペア(ペア取引)の分析を少し開始していますが、ここではグラフを作成するための関数(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)) 
} 
+0

多分このスレッドの自分自身の質問に対する私の答えはあなたにも役立ちます: http://stackoverflow.com/questions/7009711/how-to-get-years-from-a-time-series-index-when -the-underlying-time-series-of-m 少なくとも10年以上のスパン以外のタイムパンを取得する必要があります。もちろん、ダニでも同じことが働きます。 –

+2

'plot.zoo'はxtsオブジェクトと連携し、より細かい制御を提供します。 '?plot.zoo'にはたくさんの例があります。 –

答えて

3

plot.xtsは、あなたが同じX引数を使用した場合、あなたがpoints.default()lines.default()を使用できることを意味します基本プロット関数であり、 plot.xtsはを使用します。しかしそれは必要ではありません。これらのパッケージがロードされ、methods(lines)とメソッド(ポイント)を実行すると、そのような関数がすでに利用可能であるため、xtsおよびzooパッケージではすでにハッシュ化されています。 points.zooは?plot.zooページに記載されています。

+0

lines.defaultは、実行している間はプロットに何もしませんでした。最初にplot(petroxts)を使って最初のtimeseriesをxtsオブジェクトにプロットし、par(new = T)の後にlines.default(petro $ date、petroxts $ hpcl、col = "green")を実行すると、プロンプトは次のようになります。メッセージなしで返され、プロットに何も起こりません。どうすればlines.defaultを使用できますか? – Soumendra

+0

要因と日時がユーザーには分かりにくい方法で表されている可能性があります。プロット関数は暗黙のas.numeric()を行い、点がプロット領域外にあるためプロットが発生しないように見えることがよくあります。あなたの質問の「データセット」オブジェクトに関する詳細が不足しているため、より具体的な回答は不可能です。それが動物園/ xtsオブジェクトの場合、 "日付"はオブジェクトの索引コンポーネント内に存在する可能性があります。 –

関連する問題