Estoy usando gganimate para crear algunos archivos .gif que quiero insertar en mis informes. Puedo guardar los archivos y verlos bien, sin embargo, encuentro que el tamaño mostrado es pequeño: 480x480. ¿Hay alguna forma de ajustar eso, tal vez en la línea de height y width argumentos en ggsave()?

Puedo acercarme, pero eso afecta la calidad de manera deficiente y lo hace bastante ilegible para mi caso de uso.

Aquí hay un código de muestra:

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")

A continuación se muestra la salida de este código.

test.gif

15
Gautam 1 mar. 2018 a las 23:57

5 respuestas

La mejor respuesta

Puede ajustar la configuración general:

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

O cambiar la configuración de cada comando individual:

gganimate(gplot, ani.width= 1000, ani.height=1000, "test.gif")
1
oibaFox 31 mar. 2018 a las 15:05

Puede haber problemas con el uso del paquete magick.

Creo que una mejor solución es usar la función animate() en gganimate para crear un objeto que luego se pasa a la función anim_save(). No es necesario usar otro paquete.

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")
25
Nathan 10 sep. 2018 a las 00:48

Usando la nueva API del gganimate, es

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"
)
10
spren9er 31 jul. 2018 a las 21:05

Aunque Thomas sugiere echar un vistazo a animate, desafortunadamente la documentación es No muy claro en este sentido.

?animate muestra que los argumentos del dispositivo se pueden especificar a través del parámetro .... Puede encontrar argumentos disponibles en ?grDevices::png o ?grDevices::svg.

Puede controlar directamente la resolución especificando el argumento res. Y también se pueden usar unidades diferentes . Personalmente, me gusta controlar las dimensiones de mi figura en pulgadas y controlar la resolución en función de eso. La ventaja para mí es que habrá menos sorpresas con los tamaños de fuente y, por supuesto, la calidad de la figura será mejor.

Basado en el ejemplo proporcionado por el usuario 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")

dimensiones de 450x300px, como se esperaba. ingrese la descripción de la imagen aquí

1
Tjebo 22 may. 2020 a las 09:42

La confirmación de la respuesta de @ spren9er funciona:

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

0
Weevils 27 abr. 2020 a las 12:42