【问题标题】:Fail to render an animation无法渲染动画
【发布时间】:2020-06-01 04:28:36
【问题描述】:

我正在尝试学习如何使用 R 和 gganimate 获得漂亮的动画图形,但遇到了一些问题。当我尝试为我的图形制作动画时,R 似乎编辑了几个 PNG 文件,但随后无法渲染它们。这是我使用的代码示例(首先加载了 tidyverse、gganimate 和 gifski):

p <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point()
p + transition_states(Species)

R 运行第一行没有问题。说到第二行,控制台打印“rendering ----> etc.”,倒计时几秒钟。结束后,它会打印很多行,这些行似乎描述了动画对象(PNG 文件列表、状态列表等)。我猜这很正常。

最后,在我看来是问题所在,R 给我一条警告信息:

file_renderer failed to copy frames to the destination directory

当然,我没有动画。

我看到其他有关此的主题,说可能是权限问题,但我还不够好,无法理解该怎么做。我在两台机器上重现了这个问题,一台在 Ubuntu 上,另一台在 Windows 上。

【问题讨论】:

    标签: r graphics permissions gganimate


    【解决方案1】:

    首先,安装gifski 包并输入以下代码。我添加了另一行。注意+transition_states(Species) 如何成为第一行的一部分以创建一个p

    p <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + 
    geom_point()+
    transition_states(Species)
    
    animate(p, renderer = gifski_renderer())
    

    【讨论】:

    • 您好,感谢您的回答!这只是理论,因为我的问题已解决,但我不明白您的解决方案有何不同。如果我没记错的话,如果您只是运行“p”,则使用 gifski_render() 调用动画函数。是否有任何理由明确使用动画效果会更好?我无法检查,因为我的问题消失了:)。另外,有什么理由我应该只在一行上写 p 吗?还是只是一个易懂的问题?
    【解决方案2】:

    我真的不明白为什么,但问题已经自己解决了。在两台计算机和两个操作系统上,相同的代码现在都在工作。我什么都没改,所以不知道是什么原因,而且很奇怪,因为两台机器没有任何共同点。然而,两天前他们都无法制作动画,现在他们都可以了。

    结论:如果有人有同样的问题,也许稍后再试?

    结论2:也许我只是愚蠢,但我可以用一个解释来知道为什么:)

    【讨论】:

      【解决方案3】:

      从目录中删除任何以前创建的图像为我解决了这个问题。您可以手动执行此操作(选择这些图像,然后删除它们)或在 R 中使用 file.remove()

      【讨论】:

        【解决方案4】:

        您没有对程序保存动画对象的位置的读取、写入和执行(完全访问权限)。因此它无法渲染。 @Amanyiraho 建议安装 gifski 包以便 gifski_renderer() 可以使用。重新启动或更新后,您可能已获得对该位置的完全访问权限,并且您的程序无需任何修改即可开始工作。

        【讨论】:

          猜你喜欢
          • 2012-08-15
          • 2019-10-30
          • 1970-01-01
          • 2021-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          相关资源
          最近更新 更多