ggplot颜色时间序列区域

时间:2017-04-26 13:23:10

标签: r ggplot2

我的时间序列如下:

   state value frame
1:     1 40070     2
2:     2 53865     3
3:     2 44142     4
4:     1 45004     5
5:     2 41057     6
6:     2 54570     7

对于每个帧,存在一个值,以及由隐马尔可夫模型确定的状态。我想根据它所处的状态为图表的每个区域着色。例如。像这样:enter image description here

但是,我找到的所有主题似乎都是手动绘制一个或两个矩形。

1 个答案:

答案 0 :(得分:4)

假设您可以并且想要使用ggplot2,我们可以按照以下方式执行操作:

library(ggplot2)
df <- read.table(text = '   state value frame
1:     1 40070     2
                 2:     2 53865     3
                 3:     2 44142     4
                 4:     1 45004     5
                 5:     2 41057     6
                 6:     2 54570     7', header = T)
ggplot(df) +
    geom_rect(aes(xmin = frame, xmax = dplyr::lead(frame), ymin = -Inf, ymax = Inf, fill = factor(state)), 
              alpha = .4) +
    geom_line(aes(x = frame, y = value)) +
    theme_minimal()
#> Warning: Removed 1 rows containing missing values (geom_rect).