Timeline bar with colour/fill based on time-series' value (R ggplot)

Deadly 提交于 2019-12-13 00:42:55

问题


I've got a time-series data frame with pressure readings taken at regular intervals.

                  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

I can easily make a line plot of the pressure using ggplot2. But below this line plot, I'd like to have a horizontal bar where the fill colour depends on the pressure differential between two consecutive samples (df field diff).
For example, the bar would be white at times where the pressure differential is zero (i.e. pressure has not changed bewteen two consecutive samples). The fill colour would go towards a deeper shade of (say) red as the differential increases positively, and blue as it increases in the negative values.

generate sample data:

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

First part of the plot

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

How can I code this horizontal bar that would span along the entire x (time) axis and whose fill colour would vary based on the on the diff field of my df for the corresponding timestamp?


回答1:


I ended up putting geom_rect objects side-to-side, one rectangle for each value of diff. Here's the basic concept:

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

I'd need to to adjust the colour scale, fit the bars in a different graph, and do a bit more cosmetic arrangmeents, etc.



来源:https://stackoverflow.com/questions/25734630/timeline-bar-with-colour-fill-based-on-time-series-value-r-ggplot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!