假設我有以下三個圖(在 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 已經創建時是否可以執行此操作)。
謝謝!
uj5u.com熱心網友回復:
這是一種方法。只需按照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(), "framed.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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/315330.html
上一篇:圓形ProgressBar視圖不再使用iOS15進行影片處理
下一篇:SwiftUI更改過渡顏色
