用ggplot和gganimate进行动画处理

时间:2019-11-21 17:03:03

标签: r ggplot2 gganimate

我正在尝试学习使用gganimate进行动画制作的动画,并且我想知道是否有人对我遇到的问题提供了提示。为了简化操作,我在RStudio Cloud中创建了一个新项目,安装了ggplot2gganimatedatasauRus软件包,并按照{ {3}}:

library(datasauRus)
library(ggplot2)
library(gganimate)
ggplot(datasaurus_dozen, aes(x=x,y=y)) +
  geom_point() + 
  theme_minimal() + 
  transition_states(dataset,3,1) +
  ease_aes()

这会创建一系列.PNG文件,但我看不到动画。似乎有人建议我可以使用“打印”功能来查看它,但这也不起作用。

尽管我遵循了Isaac Faber的建议,但我也无法将其导出为.GIF。具体来说,magick软件包对我不起作用(当我尝试以下代码时,我收到关于我的图像不是魔术图像对象的相同错误)

p <- ggplot(datasaurus_dozen, aes(x=x,y=y)) +
  geom_point() + 
  theme_minimal() + 
  transition_states(dataset,3,1) +
  ease_aes()
anim <- animate(p)
anim_save("myfilename.gif",anim)

R告诉我

  

动画对象未指定save_animation方法。

我一直找不到可以告诉我如何指定save_animation方法的示例或文档。如果有人对此主题有任何建议,将不胜感激!

2 个答案:

答案 0 :(得分:0)

您执行的步骤太多了:

library(datasauRus) 
library(ggplot2) 
library(gganimate)

p <- ggplot(datasaurus_dozen, aes(x=x,y=y)) +
geom_point() +
theme_minimal() +
transition_states(dataset,3,1) + 
ease_aes() 

anim_save("myfilename.gif",p)

https://www.npmjs.com/package/wml

答案 1 :(得分:0)

我通过在gifski_renderer()中指定animate()解决了这个问题:

library(tidyverse)
library(gganimate)
library(gapminder)

g <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
  geom_point(alpha = 0.7, show.legend = FALSE) +
  scale_colour_manual(values = country_colors) +
  scale_size(range = c(2, 12)) +
  scale_x_log10() +
  facet_wrap(~continent) +
  # Here comes the gganimate specific bits
  labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
  transition_time(year) +
  ease_aes('linear')

animate(g, height=400, width=600, renderer=gifski_renderer())

anim_save("gapminder.gif", g)

注意:这是animate()的默认渲染器,但是需要以某种方式明确指定。第一次完成后,我不再需要设置它,这种行为我无法解释。