Я думаю, что вы можете сделать то, что вы сделали для синего цвета, но определив значения x для точек, начиная с 0 до "тренировать". Итак, я добавляю три строки в вашем loop
для вычисления x и повторения y позиций (перед «поездом») и соответственно рисую точки:
plot(0,0,xlim=c(0,28),ylim=c(0,1),
xaxt="n",yaxt="n",bty="n",xlab="",ylab="",type="n")
i <- 1
j = 1
for(j in 1:20)
{
test <- (6+j):26
train <- (1+j):(5+j)
arrows(0,1-j/20,27,1-j/20,0.05)
x_dark <- seq(0,min(train)-1, by = 1)
y_dark <- rep(1-j/20,length(x_dark))
points(x_dark,y_dark,pch = 19,col = "black")
points(train,rep(1-j/20,length(train)),pch=19,col="blue")
if(length(test) >= i)
points(test[i], 1-j/20, pch=19, col="red")
if(length(test) >= i)
points(test[-i], rep(1-j/20,length(test)-1), pch=19, col="gray")
else
points(test, rep(1-j/20,length(test)), pch=19, col="gray")
}
text(28,.95,"time")
![enter image description here](https://i.stack.imgur.com/PlC62.png)
Выглядит ли то, что вы ищете?