我目前正在创建一个包含大量数据的gif。我想要高分辨率的。
在我的旧电脑上,渲染需要几个小时,根本不值得。
我的新PC有一个非常强大的英特尔i9-9900k核心处理器,它将运行速度加快了大约30分钟,但R默认只使用一个核心……我有8个可用的,如果我能用它们在5分钟内完成渲染,那就太好了。我需要每周运行多次,所以能够使用所有8个内核将是令人惊讶的。
有什么办法可以利用这一点吗?我知道你可以在一些R代码中使用多线程,但是我不能用ggplot2/gganimate来解决这个问题。
我也有一个强大的图形卡,如果它可以用任何方式来加快这一点。
或者,如果有任何其他你能想到的加速方法,即使这意味着改变包,甚至是编程语言,那也是很棒的!
发布于 2020-10-31 01:08:22
正如Roman在评论中指出的那样,有一个pull请求,以促进动画ggplot的并行处理。
下面是一个来自this GitHub comment的基准测试示例
library(gganimate)
anim <- ggplot(mtcars, aes(mpg, disp)) +
transition_states(gear, transition_length = 2, state_length = 1) +
enter_fade() +
exit_fade()
future::plan("sequential") ## default
t0 <- system.time(animate(anim))
print(t0)
future::plan("multiprocess", workers = 4L)
t1 <- system.time(animate(anim))
print(t1)
print(t0 / t1)
## user system elapsed
## 2.2802385 0.9121339 2.5819751拉取请求尚未合并,但如果您现在需要,可以使用devtools::install_github()安装该特定分支
发布于 2020-11-25 19:16:31
请注意,通过使用适当的现代视频格式而不是gif,编码步骤将更快且质量更好。例如:
animate(anim, fps = 25, renderer = av_renderer("out.mkv"))https://stackoverflow.com/questions/57425622
复制相似问题