r - 加速 gganimate 渲染

标签 r multithreading ggplot2 gganimate

我目前正在创建一个包含大量数据的 gif。我想要高分辨率。

在我的旧电脑上渲染需要几个小时,根本不值得。

我的新 PC 有一个非常强大的英特尔 i9-9900k 核心处理器,它已将其加速到大约 30 分钟,但默认情况下 R 只使用 1 个核心......我有 8 个可用的,如果我能用它们来获得,那就太好了渲染在 5 分钟内完成。我将需要每周多次运行此程序,因此能够使用所有 8 个内核真是太棒了。

有没有办法利用这个?我知道你可以在一些 R 代码中使用多线程,但我无法用 ggplot2/gganimate 弄清楚。

如果可以以任何方式使用它来加快速度,我也有一个强大的图形卡。

或者,如果有任何其他您能想到的加速方法,即使这意味着更改包甚至编程语言也很棒!

最佳答案

正如 Roman 在评论中指出的那样,有一个 pull request 来促进动画 ggplots 的并行处理。
这是一个带有基准的示例,来自 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() 安装该特定分支。
这比what has previously been pointed out容易得多

关于r - 加速 gganimate 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57425622/

相关文章:

r - 在同一个函数中组合 scale_colour 和 scale_fill

R 数学运算 NA 值

r - 使用 ggplot2 绘制分布图

R在ggplot中的coord_flip()之后调整条形之间的空间

r - 如何在数据表中创建一个向量,该向量对另一个向量中基于值范围的子集进行求和?

multithreading - 用于开发 CLI 应用程序/脚本的最佳/流行库是什么?

ggplot2 中面的旋转

java - LinkedBlockingQueue 中 put() 的性能

c++ - 使用 pthread_t 作为映射中的键

r - 用ggplot填充R中两条黄土平滑线之间的区域