【发布时间】:2017-12-09 08:56:14
【问题描述】:
我正在尝试使用生成图像的函数从 R 脚本中制作 gif。
我有一个函数,可以根据一些信息创建一个带有点的地图。 我在 Vector 上使用这个函数来获取一系列不同的图像,我想把它们放在一个 gif 中。它看起来或多或少是这样的:
createMap <- function(my_variable){
my_map <- a_map() + geom_point() # some variable missing
png(filename = paste(aDate, ".png", sep = ""), width = 3149, height = 2183, units = "px")
plot(mw_map)
dev.off()
}
ImageMagick 已安装在我的电脑上,转换文件“converter.exe”也已安装。后来我尝试使用
生成 gif saveGIF({
lapply(my_vector, createMap)
}, movie.name = "MY_GIF.gif")
但我收到一条错误消息:
> convert: improper image header `Rplot1.png' @
> error/png.c/ReadPNGImage/4362. convert: no images defined `MY_GIF.gif'
> @ error/convert.c/ConvertImageCommand/3254.
an error occurred in the conversion...
有人知道我做错了什么吗?
【问题讨论】:
-
查看
?saveGIF,似乎您正在使用表达式,它希望表达式在图形设备中创建绘图,而不是在磁盘上。另一方面,如果您有一个生成要拼接在一起的 PNG 的函数,请先创建这些 PNG 文件,然后使用img.name参数提供名称。 -
没错,我之前试过在图形设备上绘制地图,它确实有效,但我无法设置尺寸和分辨率。您知道如何在不将绘图保存在磁盘上的情况下进行设置吗?我不明白“提供姓名”是什么意思
-
img.name文档说“图像序列的文件名('纯'名称;没有任何格式或扩展名)”,所以如果你已经有文件@ 987654329@,g2.png,g3.png,如果你想拼接在一起,你可以使用saveGIF(img.name = c("g1", "g2", "g3"), move.name = "my_gif.gif")。我想。 -
有一篇关于如何使用它的 JSS 论文——下面的例子可能是最简单的:jstatsoft.org/article/view/v053i01