2011-10-31 2 views
1

Existe-t-il un moyen d'obtenir un diagramme à ligne carrée avec quantmod?Dessiner un diagramme à ligne carrée en utilisant quantm

J'ai essayé de modifier mes séries chronologiques afin que chaque point de données soit répliqué une seconde avant le point de données suivant (espérant que cela équivaudrait à une ligne carrée), mais quantmod semble des données sur l'axe des abscisses aux valeurs réelles de x (c'est-à-dire que l'espace horizontal entre un point et le suivant est le même que le delta-T soit 1 seconde ou 1 minute). Je suppose que je pourrais convertir mon timeseries d'un sparse à un dense (une entrée par seconde au lieu d'une entrée par changement de valeur), mais cela semble très kludgy et devrait être inutile.

Je construction ma série de temps ainsi:

library(quantmod) 

myNumericVector <- c(3,7,2,9,4) 
myDateTimeStrings <- paste("2011-10-31", c("5:26:00", "5:26:10", "5:26:40", "5:26:50", "5:27:00")) 
myXts <- xts(myNumericVector, order.by=as.POSIXct(myDateTimeStrings)) 

Et dessiner le tableau comme ceci:

chartSeries(myXts, type="line", show.grid="true", theme=chartTheme("black")) 

Pour illustrer ce que je veux par rapport à ce que je, le résultat ressemble à la ligne bleue ci-dessous, mais je voudrais quelque chose comme le vert:

enter image description here

En outre, pour les curieux, est le code ici répliquant points dans la série temporelle de telle sorte que l'écart entre une valeur et la suivante sont aussi petits que possible:

mySquareDateTimes <- rep(as.POSIXct(myDateTimeStrings),2)[-1] 
mySquareDateTimes[seq(2,8,by=2)] <- mySquareDateTimes[seq(2,8,by=2)] - 1 
mySquareXts <- xts(rep(myNumericVector,each=2)[-10], order.by=mySquareDateTimes) 
chartSeries(mySquareXts, type="line", show.grid="true", theme=chartTheme("black")) 

Les résultats ne sont pas idéales.

+0

Veuillez fournir un [exemple reproductible] (http://stackoverflow.com/q/5963269/602276) (c'est-à-dire que nous ne savons pas ce que myNumericVector contient). –

+0

A rendu les exemples reproductibles. –

Répondre

3

Vous voulez un line.type de "step":

chartSeries(myXts, line.type="s") 

Voir ?plot, en particulier "type" sous ... dans la section Arguments (vous voudrez peut-être "S" au lieu de "s").

Questions connexes