首页 > 解决方案 > 为什么动画情节比静态情节小?

问题描述

下面的代码将星星变成了一个圆圈。如果我只是绘制星星,那么尺寸会很大。

ggplot(star1) +
  geom_sf(aes(geometry = geometry))

静态星

但是,动画最终变小了:

动画明星 我该怎么做才能使动画与星星的静态图大小相同?

library(tidyverse)
library(gganimate)
library(transformr)

star1 <- sf::st_sfc(poly_star(n = 7, st = TRUE))
circle1 <- sf::st_sfc(poly_circle(st = TRUE))

star2 <- star1 + c(2, 0)
circle2 <- circle1 + c(2,0)

star1 <- data.frame(
  id = c(1, 2),
  geo = c(star1, star2)
)

circle2 <- data.frame(
  id = c(1, 2),
  geo = c(circle1, circle2)
)

morph <- tween_sf(star1, circle2,
                  ease = 'linear', 
                  nframes = 12, 
                  id = id)  

ani <- ggplot(morph) +
       geom_sf(aes(geometry = geometry)) +
       transition_time(time = .frame) +
       theme(legend.position = "none") 

show <- animate(ani, nframes = 30, fps = 30, 
                renderer = gifski_renderer(loop = FALSE), start_pause = 15)

show

标签: rggplot2gganimate

解决方案


输出动画大小的宽度和高度参数(以像素为单位)是动画的选项

animate(ani, nframes = 30, fps = 30, width = 900, 
          renderer = gifski_renderer(loop = FALSE), start_pause = 15)

推荐阅读