【问题标题】:R gif with function带功能的 R gif
【发布时间】: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.pngg3.png,如果你想拼接在一起,你可以使用saveGIF(img.name = c("g1", "g2", "g3"), move.name = "my_gif.gif")。我想。
  • 有一篇关于如何使用它的 JSS 论文——下面的例子可能是最简单的:jstatsoft.org/article/view/v053i01

标签: r gif


【解决方案1】:

创建地图 png 文件后。使用下面的代码。您不需要在 PC 上安装 ImageMagick。

    library(magick)

    png.files <- sprintf("Rplot%02d.png", 1:10) #Mention the number of files to be read
GIF.convert <- function(x, output = "animation.gif")#Create a function to read, animate and convert the files to gif
        {
        image_read(x) %>%
        image_animate(fps = 1) %>%
        image_write(output)
        }

        GIF.convert(png.files)

更多详情请查看此链接:Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2021-06-06
    • 2012-10-30
    • 1970-01-01
    • 2015-11-27
    • 2016-11-26
    • 2021-07-26
    相关资源
    最近更新 更多