定义由gganimate创建的.gif的大小

时间:2018-03-01 20:57:52

标签: r ggplot2 gganimate

我正在使用height创建一些我想要插入报告的.gif文件。我能够保存文件并查看它们,但是,我发现显示的尺寸很小:480x480。有没有办法调整它 - 可能与width中的ggsave()gplot<- ggplot(gapminder, aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop, frame = year)) + geom_point(alpha = 0.6) + scale_x_log10() gganimate(gplot, "test.gif") 参数一致?

我可以放大,但这会影响质量,并使我的用例难以理解。

以下是一些示例代码:

$this->service->execute($request)

以下是此代码的输出。

test.gif

5 个答案:

答案 0 :(得分:12)

使用magick软件包可能会有问题。

我认为更好的解决方案是使用animate()中的gganimate函数创建一个对象,然后将该对象传递给anim_save()函数。无需使用其他软件包。

library(gganimate)
library(gapminder)

my.animation <- 
  ggplot(
  gapminder,
  aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)
 ) +
geom_point(alpha = 0.6) +
scale_x_log10() +
transition_time(year)

# animate in a two step process:
animate(my.animation, height = 800, width =800)
anim_save("Gapminder_example.gif")

答案 1 :(得分:8)

使用gganimate软件包的新API,它是

library(gganimate)
library(gapminder)

gplot <- 
  ggplot(
    gapminder,
    aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)
  ) +
    geom_point(alpha = 0.6) +
    scale_x_log10() +
    transition_time(year)

magick::image_write(
  animate(gplot, width = 1000, height = 1000), 
  "test.gif"
)

答案 2 :(得分:8)

尽管Thomas suggests看了animate,但不幸的是,文档在这方面不是很清楚。

?animate显示可以通过...参数指定设备参数。您可以在?grDevices::png?grDevices::svg上找到可用的参数。

您可以通过指定res参数来直接控制分辨率。而且还可以使用不同单位。我个人喜欢控制以英寸为单位的图形尺寸,并据此控制分辨率。 对我来说,优点是字体大小的惊喜会减少得多,并且图形的质量当然会更好。

基于示例provided by user Nathan

library(gganimate)
library(gapminder)

my.animation <-
  ggplot(gapminder, aes(x = gdpPercap, y = lifeExp, colour = continent, size = pop)) +
  geom_point(alpha = 0.6) +
  scale_x_log10() +
  transition_time(year) +
  theme_bw(base_size = 8)

animate(my.animation, height = 2, width = 3, units = "in", res = 150)

anim_save("gapminder_example.gif")

尺寸为450x300像素,如预期。 enter image description here

答案 3 :(得分:2)

您可以调整常规设置:

animation::ani.options(ani.width= 1000, ani.height=1000, ani.res = 1000)

或更改每个命令的设置:

gganimate(gplot, ani.width= 1000, ani.height=1000, "test.gif")

答案 4 :(得分:0)

确认@ spren9er的答案有效:

anim_save("test.gif", gplot, width = 1000, height = 1000)