2011-08-11 14 views
5

Hisse senedi çiftleri (çiftler ticareti) üzerinde biraz analiz yapmaya başladım ve burada bir grafik üretmek için yazdığım işlev (aşağıda listelenen).Xts nesnelerini kullanarak Nokta, Efsane ve Metin Ekleme

Tek bir arsada üç farklı çizgi çizmem gerekiyor. Listelediğim işlev, ne yapmak istediğimi yapar, ancak x ekseninde (zaman çizgisi) iyi bir özelleştirme yapmak istiyorsam biraz çalışma gerektirecektir. Olduğu gibi, x ekseninde yalnızca yıllar (10 yıllık veri) veya aylar (6 aylık veriler için), keneler için biçimlendirme olmaksızın yazdırır.

I

plot(xts-object-with-date-asset1-asset2, ...) 

yerine

plot(date, asset2, ...) 

kullanmak eğer, örneğin, bir XTS nesnesini kullanır ben ızgara ve kutu ile birlikte (hemen güzel bir şekilde biçimlendirilmiş x eksenini elde), ancak nokta(), text(), lines() gibi işlevleri kullanarak arsaya sonraki eklemeler başarısız olur. Sanırım, points.xts() ve text.xts(), yakında herhangi bir zamanda çıkmıyor.

Ben xts nesnelerinin rahatlığını isterim, ama ayrıca arsa üzerinde ince taneli bir kontrole ihtiyaç duyacağım. Peki iş akışım nasıl olmalı? Temel grafiklere bağlı kalmalı ve tüm kişiselleştirmeyi el ile yapmalı mıyım? Yoksa benim için xts çalışmamın bir yolu var mı?

Kafes ve ggplot2'nin farkındayım, ancak bunları şimdi kullanmak istemiyorum. İşte bahsettiğim fonksiyonudur (herhangi bir eleştiri/kod iyileştirilmesi için öneriler açığız) -

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

Belki de bu konudaki kendi soruma cevabım da size yardımcı olur: http://stackoverflow.com/questions/7009711/how-to-get-years-from-a-time-series-index-when -the-under-time-series-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-of-en az 10 yıl yaymak için diğer zaman çizelgeleri almalısınız en azından. Tabii ki aynı da keneler ile çalışır. –

+2

'plot.zoo' xts nesnelerle çalışır ve size daha iyi bir denetim sağlar. 'plot.zoo'da tonlarca örnek var. –

cevap

3

plot.xts Eğer aynı x argümanlar kullanılır eğer points.default() ve lines.default() kullanabileceğiniz anlamına gelir bir baz arsa fonksiyonu vardır plot.xts kullanır. Ama bu gerekli değil. Bu paketler yüklendiğinde ve methods(lines)'u çalıştırdığınızda ve yöntemleri (noktaları) zaten görüyorsanız, zaten xts ve zoo paketlerinde çıkmıştır. points.zoo, plot.zoo sayfasında belgelenmiştir.

+0

lines.default, yürütüldüğünde arsaya bir şey yapmadı. İlk olarak xts nesnesindeki ilk zaman çizimlerini çizmek için plot (petroxts) kullanıyorum ve lines.default (petro $ date, petroxts $ hpcl, col = "green") komutunu çalıştırdığımda par (new = T) sonra herhangi bir mesaj olmadan döndü ve arsada hiçbir şey olmuyor. Peki lines.default'u nasıl kullanabilirim? – Soumendra

+0

Muhtemelen, faktörlerin ve zaman tarihlerinin, kullanıcı için belirgin olmayan şekillerde temsil edildiği gerçeğini deneyimliyor olabilirsiniz. Çizgisel çizim işlevlerinin örtülü bir as.numerik() yapacağı ve çizimlerin çizim alanı dışında olduğu için çizimin gerçekleşmediği görülür. Sorunuzdaki "veri kümesi" nesnesine ilişkin ayrıntı eksikliği nedeniyle daha spesifik bir yanıt mümkün değildir. Bir hayvanat bahçesi/xts nesnesi ise, "tarihler" nesnenin dizin bileşeninde olabilir. –