在R中创建GIF动画 [英] Creating GIF Animations in R

查看:22
本文介绍了在R中创建GIF动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有以下三个图(在R中):

p1 = hist(rnorm(1000,1,1), 10000)
p2 = hist(rnorm(1000,1,1), 10000)
p3 = hist(rnorm(1000,1,1), 10000)

有没有办法将这些内容制作成

gif";?

例如:

library(gifski)
gif_file <- ( "C:/Users/OneDrive/Documents/ref.gif")
save_gif((p1, p2, p3), gif_file, 1280, 720, res = 144)

我不确定此语句是否打算以这种方式使用。有人知道这是否可能吗?

(注意:我知道您可以使用循环来完成此操作(即,使用循环创建p1、p2、p3),但我特别感兴趣的是在已经创建了p1、p2、p3的情况下是否可以执行此操作)。

谢谢!

推荐答案

这里有一种方法。只需按照help("gifski")中的最后一个示例操作。

library(gifski)

makeplot <- function(){
  p1 = hist(rnorm(1000,1,1), 10000)
  p2 = hist(rnorm(1000,1,1), 10000)
  p3 = hist(rnorm(1000,1,1), 10000)
}

set.seed(2021)

gif_file <- "~/tmp/ref.gif"
save_gif(makeplot(), gif_file, 1280, 720, res = 144)

utils::browseURL(gif_file)

编辑

在绘图已存在的情况下创建GIF文件必须分两步完成。首先从绘图创建PNG文件,然后创建GIF动画。

set.seed(2021)
p1 <- hist(rnorm(1000,1,1), 10000)
p2 <- hist(rnorm(1000,1,1), 10000)
p3 <- hist(rnorm(1000,1,1), 10000)

plot_list <- list(p1, p2, p3)

png_path <- file.path(tempdir(), "frame%03d.png")
png(png_path)
lapply(plot_list, plot)
#[[1]]
#NULL
#
#[[2]]
#NULL
#
#[[3]]
#NULL

dev.off()
#RStudioGD 
#        2 

png_files <- sprintf(png_path, seq_along(plot_list))
gif_file2 <- "~/tmp/ref2.gif"

gifski(png_files, gif_file2)
#Inserting image 3 at 2.00s (100%)...
#Encoding to gif... done!
#[1] "/home/rui/tmp/ref2.gif"

utils::browseURL(gif_file2)

最终清理

unlink(gif_file)
unlink(gif_file2)
unlink(png_files)

这篇关于在R中创建GIF动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆