在使用animation
包的动画中,我想绘制一些点,然后累积累积连续添加线条(或其他图形元素)到绘图中。这就像在fig.show="all"
块选项中使用knitr
一样。
这是一个简单的测试:
library(animation)
myplot <- function() {
x <- 1:10
y <- x^2
plot(x, y, pch=16, cex=1.5)
for (i in 1:(length(x)-1)) {
lines( c(x[i], x[i+1]), c(y[i], y[i+1]))
}
}
但是,在此上使用saveHTML
只会生成一个帧。所以,我尝试在此添加ani.record()
,
myplot1 <- function() {
x <- 1:10
y <- x^2
plot(x, y, pch=16, cex=1.5)
for (i in 1:(length(x)-1)) {
lines( c(x[i], x[i+1]), c(y[i], y[i+1]))
ani.record()
}
}
并将其作为
运行saveHTML({
myplot1()
}, img.name = "myplot1", imgdir = "myplot1_dir", htmlfile = "myplot1.html",
title = "myplot1 test")
然而,现在给出的是一系列帧,分别显示每个新行,而不是它们的累积效应。
最终,这将进入Rmd
与knitr
运行的文档,但如果可能的话,我希望能够立即使用animation
包开发动画。
答案 0 :(得分:0)
为了记录,我将对我的问题给出部分答案:使用animation
包可以很容易地完成我想要做的事情,因为它主要是为了制作动画而设计的一个&#34;完整&#34;的集合图形框架。
在循环中使用ani.record()
是必要的,但我的myplot1()
尝试
没有工作,因为它只记录了最近的一行,而不是累积序列。
下面的版本做得更好,方法是:(a)在循环内移动plot()
调用,(b)从每个帧的1:i
重新绘制所有行。
myplot2 <- function() {
x <- 1:10
y <- x^2
for (i in 1:(length(x)-1)) {
plot(x, y, pch=16, cex=1.5)
lines( c(x[1:i], x[1:i+1]), c(y[1:i], y[1:i+1]))
ani.record()
}
}
saveHTML({
myplot2()
}, img.name = "myplot2", imgdir = "myplot2_dir", htmlfile = "myplot2.html",
title = "myplot2 test")