我的时间序列如下:
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
对于每个帧,存在一个值,以及由隐马尔可夫模型确定的状态。我想根据它所处的状态为图表的每个区域着色。例如。像这样:
但是,我找到的所有主题似乎都是手动绘制一个或两个矩形。
答案 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).