2017-05-02 1 views
1

J'essaie de tracer une donnée xts (précipitations annuelles) et d'ajouter une ligne de tendance (par exemple Loess). Quelqu'un peut-il s'il vous plaît suggérer une option pour tracer la ligne de tendance sans avoir besoin de convertir les xts en ts.Tracer des données xts avec la ligne de tendance

données Exemple:

>RainXts 
      Rf 
1978-12-31 1416.95 
1979-12-31 881.152 
1980-12-31 1437.75 
1981-12-31 881.10 
1982-12-31 966.07 
1983-12-31 1387.61 
1984-12-31 1013.58 
1985-12-31 1180.57 
1986-12-31 1162.35 
1987-12-31 883.92 
1988-12-31 955.84 
1989-12-31 828.472 
1990-12-31 1208.72 
1991-12-31 1324.72 
1992-12-31 1096.2 
1993-12-31 1454.64 
1994-12-31 874.64 
1995-12-31 941.92 
1996-12-31 883.92 
1997-12-31 793.44 

Note: Conversion des XTS à ts objet et en utilisant la commande ci-dessous œuvres (où RainTs = as.ts (RainXts))

lines(lowess(time(RainTs),RainTs),col="red") 
+0

Je viens de réaliser que, lorsque le paquet XTS n'est pas chargé à la bibliothèque, les parcelles de commande de tracé de la série de temps (sans bonne date/affichage de l'année plutôt comme une séquence simple, nombres) mais la ligne suivante (lowess()) ajoute la ligne comme prévu. Cependant, dès que le paquet xts est attaché à la bibliothèque, la commande plot trace correctement la série, y compris l'affichage de la date correcte, mais les lignes suivantes (lowess()) ne fonctionnent pas. Toute solution pour les obtenir les deux, s'il vous plaît. – Dnstuladhar

Répondre

0

Voici un moyen rapide avec ggplot, si vous convertissez vos données en data.frame, avec df$date <- as.Date(rownames(RainXts)):

ggplot(df, aes(date, Rf)) + 
     geom_point() + 
     stat_smooth() 

enter image description here

cadre de données utilisées:

df<- structure(list(Rf = c(1416.95, 881.152, 1437.75, 881.1, 966.07, 
1387.61, 1013.58, 1180.57, 1162.35, 883.92, 955.84, 828.472, 
1208.72, 1324.72, 1096.2, 1454.64, 874.64, 941.92, 883.92, 793.44 
), date = structure(c(3286, 3651, 4017, 4382, 4747, 5112, 5478, 
5843, 6208, 6573, 6939, 7304, 7669, 8034, 8400, 8765, 9130, 9495, 
9861, 10226), class = "Date")), class = "data.frame", .Names = c("Rf", 
"date"), row.names = c(NA, -20L)) 
+0

Merci beaucoup pour la réponse Adam. Mais j'essayais de (pouvons-nous?) Tracer la ligne de tendance sans avoir besoin de convertir xts en dataframe ou ts. (J'ai beaucoup de stations de précipitations et d'objets xts pour plusieurs échelles de temps, donc je veux réduire le nombre d'exigences pour créer d'autres objets, si possible). – Dnstuladhar