2014-09-08 6 views
1

J'ai un cadre de données de séries temporelles avec des lectures de pression prises à intervalles réguliers.Barre temporelle avec couleur/remplissage basée sur la valeur de la série temporelle (R ggplot)

    time pressure  diff 
1 2014-09-09 09:12:29 1.6191598 0.00000000 
2 2014-09-09 09:12:28 3.0137784 -0.07668387 
3 2014-09-09 09:12:27 1.1958183 0.58693260 
4 2014-09-09 09:12:26 2.2803681 1.07774954 
5 2014-09-09 09:12:25 -0.7614310 -0.17864232 
6 2014-09-09 09:12:24 0.9914106 -0.70121973 

Je peux facilement faire un tracé de la pression en utilisant ggplot2. Mais en dessous de ce tracé, j'aimerais avoir une barre horizontale où la couleur de remplissage dépend de la différence de pression entre deux échantillons consécutifs (df champ diff).
Par exemple, la barre serait blanche aux moments où la différence de pression est nulle (c'est-à-dire que la pression n'a pas changé entre deux échantillons consécutifs). La couleur de remplissage irait vers une nuance plus profonde de (disons) rouge que le différentiel augmente positivement, et bleu comme il augmente dans les valeurs négatives.

générer des données d'échantillon:

dfTimeSeries <- data.frame(time = Sys.time()-seq(1:10), 
          pressure = rnorm(10,1), 
          diff = c(0,diff(dfTimeSeries$pressure))) 

Première partie de la parcelle

ggplot(data = dfTimeSeries)+ 
    geom_line(aes(x=time, y=pressure)) 

Comment puis-je coder cette barre horizontale qui s'étendrait le long de l'axe entier x (temps) et dont la couleur du remplissage était varie en fonction du champ diff de ma df pour l'horodatage correspondant?

+0

I juste pensé que je pourrais utiliser 'geom_rect()' pour dessiner des rectangles côte à côte sur une ligne horizontale, et définir 'aes ([...] fill = diff)'? Y a-t-il un meilleur moyen? – Ant

+0

'geom_rect' est certainement ce que je ferais. –

Répondre

1

J'ai fini par mettre geom_rect objets côte à côte, un rectangle pour chaque valeur de diff. Voici le concept de base:

ggplot(data = dfTimeSeries)+ 
    geom_line(aes(x=time, y=pressure))+ 
    geom_rect(aes(xmax=time+.5, xmin=time-.5,ymax=-3,ymin=-2, fill=diff)) 

Je dois régler l'échelle de couleurs, adapter les barres dans un graphique différent, et faire un peu plus arrangmeents cosmétiques, etc.

Pressure plot and colour-coded differential band

Questions connexes