У меня есть два временных ряда, как показано ниже:
y1 <- mvrnorm(50, c(3,1), matrix(c(0.5,0.3,0.3,0.3),2,2))# 2-D bivariate normal
y2 <- mvrnorm(50, c(1,0), matrix(c(2,.1,.1,1),2,2))# another 2-D bivariate normal
y <- rbind(y1,y2) # append the second to the end of the first
Я рисую их с помощью ggplot:
yd <- as.data.frame(y)
g<- ggplot(data=yd) +
geom_line(aes(x=1:nrow(yd), y=yd$V1, colour= "TS1"))+
geom_line(aes(x=1:nrow(yd), y=yd$V2, colour= "TS2"))+
scale_colour_manual(name= "Levels",
values = c("TS1"= "black",
"TS2" ="blue"))+
labs(title="Two time series")+
xlab("Time") +
ylab("Levels") +
theme(legend.justification = c(1, 0), legend.position = c(1, 0))
Затем я запускаю классификатор, который создает числовой вектор меток классов для каждой временной точки. Ниже я рисую апостериор и предоставляю вектор метки.
dput(labels)
c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L)
Я хочу иметь возможность закодировать рисунок 1 цветом по отношению к меткам классов, полученным из приведенного выше вектора меток. Чтобы быть ясным, я хочу иметь возможность видеть, в каком состоянии (классе) я нахожусь в любой момент времени, а не просто видеть границы сдвига состояния. Я считаю, что наиболее интуитивно понятный способ сделать это - изменить цвет фона (например, с серого на оранжевый) при переходе состояния в класс 2.
Как лучше всего добиться этого в ggplot? Я, очевидно, открыт для других предложений по решению.
geom_vline()
во время сдвига? - person Andrie   schedule 06.02.2015