Попытка добавить точки в базовый график R - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь создать иллюстративную графику c. Код, который у меня есть:

par(mar=c(0,0,0,0))
plot(0,0,xlim=c(0,28),ylim=c(0,1),
     xaxt="n",yaxt="n",bty="n",xlab="",ylab="",type="n")
i <- 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)
  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")

Мне не хватает добавления точек «темно-серого» перед «синими» точками, чтобы указать, что эти точки больше не существуют или являются данными прошлого периода.

  • Синие точки обозначают некоторые данные
  • Красные точки обозначают некоторые данные испытаний
  • Серые точки обозначают некоторые будущие данные / данные испытаний

Я хочу добавьте темно-серые точки, чтобы указать прошлые данные, в данный момент я могу просто получить "пустые" места.

1 Ответ

1 голос
/ 06 января 2020

Я думаю, что вы можете сделать то, что вы сделали для синего цвета, но определив значения 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

Выглядит ли то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...