【发布时间】:2018-07-24 20:11:12
【问题描述】:
为了最小化第 3 方包的依赖并保留并行化代码的能力;下面这个可复制的示例旨在使用 R 的基本图形(没有 Tidyverse 或 GGPlot)为绘图的 每个 行步骤创建 png 图像。
然而,它会为每个图像生成整个系列,而不是所需的预期迭代构建:
#
setwd("///images")
data(mtcars) # load DF
frames = 50 # set image qty rate
for(i in 1:frames){
# creating a name for each plot file with leading zeros
if (i < 10) {name = paste('000',i,'plot.png',sep='')}
if (i < 100 && i >= 10) {name = paste('00',i,'plot.png', sep='')}
if (i >= 100) {name = paste('0', i,'plot.png', sep='')}
png(name)
# plot(mtcars$mpg,type="l")
plot(mtcars$mpg)
dev.off()
}
my_cmd <- 'convert *.png -delay 5 -loop 5 mpg.gif'
system(my_cmd)
#
我自己未能成功解决问题的尝试包括:
1) 删除帧迭代并使用 nrows (mtcars) 作为循环控制代理? 2)以某种方式为每个绘图调用引用行索引? 3) 在每个情节之后在循环内插入一个 sleep() 调用? 4) 使用 apply() 函数而不是循环?
任何指针或替代编码可以更高效地使这项工作按预期工作?
谢谢。
【问题讨论】:
-
澄清一下,您是否要一次绘制一个点?
标签: r loops animated-gif