Adicionando pontos, legendas e texto a plotagens usando objetos xts

Estou começando uma análise sobre pares de ações (negociação de pares) e aqui está a função que escrevi para produzir um gráfico (pairs.report - listado abaixo

Preciso plotar três linhas diferentes em uma única plotagem. A função que listei faz o que eu quero, mas será um pouco trabalhoso se eu desejar uma boa personalização no eixo x (a linha do tempo). Como é, imprime apenas os anos (por 10 anos de dados) ou os meses (por 6 meses) no eixo x, sem formatação para tique

Se eu usar um objeto xts, ou seja, se eu usar

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

ao invés d

plot(date, asset2, ...)

Recebo um eixo x bem formatado imediatamente (junto com a grade e a caixa), mas as adições subseqüentes ao gráfico usando funções como pontos (), texto (), linhas () falham. Suponho que points.xts () e text.xts () não serão lançados tão cedo.

Gostaria da conveniência dos objetos xts, mas também exigirei um controle refinado sobre minha plotagem. Então, como deve ser meu fluxo de trabalho? Preciso me ater aos gráficos básicos e fazer toda a personalização manualmente? Ou existe uma maneira de fazer xts funcionar para mim?

Estou ciente da estrutura e do ggplot2, mas não quero usá-los agora. Aqui está a função que eu mencionei (qualquer crítica / sugestão para melhoria do código é bem-vinda) -

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

questionAnswers(1)

yourAnswerToTheQuestion