Zaczynam od analizy par par (handlu parami) i tutaj jest funkcja, którą napisałem do tworzenia wykresu (pairs.report - lista poniżej).Dodawanie punktów, legend i tekstu do drukowania za pomocą obiektów xts
Potrzebuję wykreślić trzy różne linie na jednym wykresie. Funkcja, którą mam na liście, wykonuje to, co chcę, ale zajmie to trochę pracy, jeśli chcę precyzyjnie dostosować na osi x (linię czasu). W rzeczywistości drukowane są tylko lata (dla 10 lat danych) lub miesiące (dla 6 miesięcy danych) na osi X, bez formatowania dla kleszczy.
Gdybym użyć obiektu XTS, to znaczy, jeśli mogę użyć
plot(xts-object-with-date-asset1-asset2, ...)
zamiast
plot(date, asset2, ...)
dostaję ładnie sformatowany oś x razu (wraz z siatki i skrzynki), ale kolejne uzupełnienia wykresu za pomocą funkcji takich jak points(), text(), lines() zawodzą. Przypuszczam, że points.xts() i text.xts() nie pojawią się w najbliższym czasie.
Chciałbym wygodę obiektów Xts, ale będę również wymagał drobnej kontroli nad moją fabułą. Jak powinien wyglądać mój work-flow? Czy muszę trzymać się podstawowej grafiki i ręcznie dostosowywać wszystkie ustawienia? Czy istnieje sposób, w jaki mogę zrobić dla mnie XTS?
Jestem świadomy kraty i ggplot2, ale nie chcę ich teraz używać. Oto funkcja wspominałem (wszelka krytyka/sugestie dotyczące poprawy kod jest mile widziane) -
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))
}
Może moja odpowiedź na moje własne pytanie w tym wątku pomaga również: http://stackoverflow.com/questions/7009711/how-to-get-years-from-a-time-series-index-when - przynależność do serii czasu-jest-of-m przynajmniej powinieneś dostać inne okresy czasu niż tylko 10-letnie okresy. Oczywiście to samo działa z kleszczami. –
'dział.zoo' działa z obiektami xts i daje ci dużo lepszą kontrolę. '? plot.zoo' ma mnóstwo przykładów. –