2017-03-13 1 views
1

Je cherche un moyen de mettre du texte (probablement vertical) sur un abline en xts, mais il semble que je ne puisse pas définir où mettre le texte (cependant, je peux définir l'abline) :texte vertical pour abline en xts

require(xts) 
data(sample_matrix) 
sample.xts <- as.xts(sample_matrix, descr='my new xts object') 


for (i in 1:dim(sample.xts)[2]){ 
    cat(paste("\n",i)) 
    plot((tail(sample.xts[,i],10)), main=paste("column" ,i)) 
    print(lines(x = tail(sample.xts[,i],10), col = "darkgreen", lty=2, on=1)) 
    abline(v=.index(last(sample.xts[-dim(sample.xts)[1],])), col="red",lty=3) 
    # text(here possibly some vertical text) 
} 

édité: le code est maintenant reproductible. J'ai besoin d'un moyen de placer le texte à l'abline avec l'index de temps, pas avec un nombre (ou pour trouver le nombre correct) Des suggestions? Merci d'avance!

+0

Quelle version de XTS utilisez-vous? –

+0

J'utilise la version 0.9.874 mais je pourrais mettre à jour au plus tard si cela aide. – 4554888

+0

Sur WIndos, il est 0,9-7. – 4554888

Répondre

0

La version xts sur CRAN est actuellement 0.9-7. En utilisant cette version, vous devez utiliser text() et le paramètre srt pour ajouter et faire pivoter le texte. Si vous ne parvenez pas à définir l'emplacement, vous pouvez utiliser votre souris avec la fonction locator() pour trouver les coordonnées de manière interactive.

# Using xts 0.9-7 
require(xts) 
data(sample_matrix) 
x <- tail(as.xts(sample_matrix, dateFormat = "Date"), 10)[,1] 

plot(x) 
lines(x, col = "darkgreen", lty=2) 
v <- last(.index(x)[-nrow(x)]) 
abline(v = v, col = "red", lty = 3) 
text(v, max(x), "label", pos = 2, srt = 90) 

enter image description here

+0

Merci Joshua! Pour les autres: l'étiquette inférieure est: texte (v, min (tail (x, 10)), "xxx", pos = 3, srt = 90) – 4554888

0

Étant donné que votre code n'est pas reproductible, j'utilise un jeu de données intégré. Pour une rotation de 90 degrés, vous pouvez utiliser ce qui suit:

attach(mtcars) 
plot(mpg ~ hp) 
abline(v = 170) 
text(x = 180, y = 25, label = "Your text here!", srt = 90)