到目前为止,我所取得的成就是创建了一个具有30个相同帧的gif,最后一帧具有黄土曲线。
但是,我想要一个单独绘制每个点的动画(即第1帧打印第一个观察,第2帧打印第一个和第二个观察等)。此外,在动画结束时(一旦绘制了所有点和黄土),我想要添加线段,将点连接到黄土曲线。
我基本上想要从ISLR动画this plot。
```{r, echo=FALSE, message=FALSE, results='hide'}
library(animation)
income <- read.csv("Datasets/Income1.csv")
x <- income$Education
y <- income$Income
loess.model <- (loess.smooth(x,y))
saveGIF({
for(i in 1:30)
plot(y~x)
lines(loess.model)
}, interval = 0.15, movie.name = "f.gif", dir(path = "animations"))
```
答案 0 :(得分:1)
这是一种方法:
library(animation)
x <- cars$speed
y <- cars$dist
l <- loess(y~x)
y_ <- predict(l, newdata = x)
ylim <- range(y)
xlim <- range(x)
p <- function(x,y, ...)
plot(x, y, ylim=ylim, xlim=xlim, xlab="x", ylab="y", ...)
times <- c(1, rep(0.1, length(x)), 1, 5) # frame 1 for 1 sec, 2-51 à 0.1 sec, ...
saveGIF({
p(x,y) # frame 1
for(i in seq_along(x)) p(x[1:i], y[1:i]) # frames 2-51
p(x,y);lines(x, y_) # frame 52
p(x,y);lines(x, y_);segments(x, y_, x, y, col = "red") # frame 53
}, interval = times)