如何使用R的动画包为散点图设置动画?

时间:2017-01-01 08:50:57

标签: r animation

到目前为止,我所取得的成就是创建了一个具有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"))
```

1 个答案:

答案 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)

enter image description here