在R中,我试图基于多个图像获得GIF动画。我编写了一个返回图像的函数,并使用动画包的saveGIF()函数创建了GIF。返回图像的函数起作用(我在查看器中看到了弹出的图像)。使用saveGIF创建GIF时,没有错误消息,但GIF为空。
library(leaflet)
library(mapview)
library(animation)
latitude = c(seq(48.13608, 52.48608, 0.00145))
longitude = c(seq(11.57278, 13.40278, 0.00061))
sampledf <- as.data.frame(cbind(longitude, latitude))
plot.1 <- function(df)
{
for (i in seq(1,nrow(df),300)){
m<- leaflet() %>%
addTiles() %>%
setView( lng = 12.48778
, lat = 50.31108
, zoom = 4 ) %>%
addPolylines(data = df[1:i,],
lng = ~longitude,
lat = ~latitude,
color = ~"red")
print(m)
}
}
saveGIF(plot.1(sampledf),movie.name="test.gif", interval=0.5, ani.width=1980/2, ani.height=1080/2)
答案 0 :(得分:2)
这可能是一种复杂的处理方式,但是我可以通过首先为png
数据创建sampledf
文件,然后使用magick
库来生成gif来实现。
library(leaflet)
library(mapview)
library(magick)
counter <- 1
for (i in seq(1,nrow(sampledf),300)){
m <- leaflet() %>%
addTiles() %>%
setView( lng = 12.48778
, lat = 50.31108
, zoom = 4 ) %>%
addPolylines(data = sampledf[1:i,],
lng = ~longitude,
lat = ~latitude,
color = ~"red")
mapshot(m, file = paste0("plot_", counter, ".png"))
counter = counter + 1
}
file_names <- list.files(pattern = "plot_\\d+.png$", full.names = TRUE)
image_read(file_names) %>%
image_animate(fps = 1) %>%
image_write("output.gif")