作成済みの画像ファイルを連結してGIFアニメーションを作成する方法を紹介します。
始めにサンプルとする画像ファイルを10枚作成します。作成しました画像ファイルは D:/gif-anime に保存します。
set.seed(20240618)
library(ggplot2)
library(dplyr)
n <- 10
x <- seq(n) %>% as.factor()
y0 <- rnorm(n)
barcol <- scales::hue_pal()(n)
for (iii in seq(n)) {
y <- y0
y[setdiff(seq(n), seq(iii))] <- 0
g <- ggplot(mapping = aes(x = x, y = y, fill = x)) +
geom_bar(stat = "identity") +
ylim(range(y0)) +
geom_hline(yintercept = 0) +
labs(title = paste0("x = ", iii)) +
scale_fill_manual(values = barcol) +
theme(legend.position = "none")
print(g)
ggsave(filename = paste0(formatC(x = iii, width = 2, flag = "0"), ".png"), plot = g, path = "D:/gif-anime")
}保存された画像ファイル名を確認します。
imagefiles <- list.files(path = "D:/gif-anime", pattern = "*.png", full.names = TRUE)
imagefiles %>% matrix() [,1]
[1,] "D:/gif-anime/01.png"
[2,] "D:/gif-anime/02.png"
[3,] "D:/gif-anime/03.png"
[4,] "D:/gif-anime/04.png"
[5,] "D:/gif-anime/05.png"
[6,] "D:/gif-anime/06.png"
[7,] "D:/gif-anime/07.png"
[8,] "D:/gif-anime/08.png"
[9,] "D:/gif-anime/09.png"
[10,] "D:/gif-anime/10.png"パッケージ magick を利用し上記10枚の画像ファイルを連結してGIFアニメーションを作成します。
参照しました資料はこちらです。 https://stackoverflow.com/questions/56389470/convert-multiple-png-to-gif-as-an-animation-in-r
パッケージのバージョンを確認します。
packageVersion("magick")[1] '2.8.1'GIFアニメーションを作成します。
imagefiles %>%
magick::image_read() %>% # 画像ファイルすべての読み込み
magick::image_join() %>% # 画像ファイルの結合
magick::image_animate(fps = 2) # アニメーションのための設定GIFアニメーションを保存する場合は image_write {magick} を利用します.
imagefiles %>%
magick::image_read() %>%
magick::image_join() %>%
magick::image_animate(fps = 2) %>%
magick::image_write(path = "D:/gif-anime/animation-by-magick.gif")
list.files(path = "D:/gif-anime", pattern = "*.gif", full.names = TRUE)[1] "D:/gif-anime/animation-by-magick.gif"以上です。












