По умолчанию R строит один вектор в качестве координат y и использует последовательность для координат x.Итак, чтобы построить график, который вам нужен, все, что вам нужно, это:
plot(pupil_data$PupilLeft, type = "o")
Вы не предоставили пример данных, но вы можете увидеть это с помощью встроенного набора данных радужной оболочки:
plot(iris[,1], type = "o")
Это фактически отображает точки в виде линий.Если вы фактически получаете очки без линий, вам нужно предоставить рабочий пример с вашими данными, чтобы выяснить, почему.
РЕДАКТИРОВАТЬ:
Ваш исходный код не работает из-запетля.В действительности вы просите R построить линию, соединяющую одну точку с собой каждый раз через цикл.В следующий раз через цикл R не узнает, что есть другие точки, которые вы хотите подключить;в противном случае это нарушило бы предполагаемое использование points
, то есть добавления точек / линий к существующему графику.
Конечно, линия, соединяющая точку с самим собой, на самом деле не имеет смысла,и поэтому он не отображается (или отображается слишком маленьким, чтобы увидеть тот же результат).
Ваш пример легче всего сделать без цикла:
PupilLeft <- c(3.553479 ,3.539469 ,3.527239 ,3.613131 ,3.649437 ,3.632779 ,3.614373
,3.605981 ,3.595985 ,3.630766 ,3.590724 ,3.626535 ,3.62386 ,3.619688
,3.595711 ,3.627841 ,3.623596 ,3.650569 ,3.64876)
plot(PupilLeft, type = 'o')
Если вам действительно нужноиспользовать цикл, то кодирование становится более сложным.Один из подходов заключается в использовании замыкания:
makeaddpoint <- function(firstpoint){
## firstpoint is the y value of the first point in the series
lastpt <- firstpoint
lastptind <- 1
addpoint <- function(nextpt, ...){
pts <- rbind(c(lastptind, lastpt), c(lastptind + 1, nextpt))
points(pts, ... )
lastpt <<- nextpt
lastptind <<- lastptind + 1
}
return(addpoint)
}
myaddpoint <- makeaddpoint(PupilLeft[1])
plot(NA,NA,xlim=c(0,length(PupilLeft)), ylim=c(2,max(PupilLeft)))
for (i in 2:(length(PupilLeft)))
{
myaddpoint(PupilLeft[i], type = "o")
}
Затем вы можете обернуть вызов myaddpoint
в цикле for любым тестированием, которое вам нужно, чтобы решить, будете ли вы на самом деле строить эту точку или нет.Функция, возвращаемая makeaddpoint
, будет отслеживать индексирование графика для вас.
Это нормальное программирование для Lisp-подобных языков.Если вас это смущает, вы можете сделать это без замыкания, но вам нужно будет обработать увеличение индекса и сохранение предыдущего значения точки «вручную» в цикле.