Как заставить thomasp85 / gganimate работать правильно? - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть следующий код со следующего сайта: https://www.r -graph-gallery.com / 288-animated-barplot-transition /

# libraries:
library(tidyverse)
library(tweenr)
library(gganimate)

# Make 2 basic barplots
a=data.frame(group=c("A","B","C"), values=c(3,2,4), frame=rep('a',3))
b=data.frame(group=c("A","B","C"), values=c(5,3,7), frame=rep('b',3))
data=rbind(a,b)

# Basic barplot:
ggplot(a, aes(x=group, y=values, fill=group)) +
  geom_bar(stat='identity')

# Interpolate data with tweenr
ts <- list(a, b, a)
tf <- tween_states(ts, tweenlength = 0.02, statelength = 0.001, ease = c('cubic-in-out'), nframes = 30)
tf

# Make a barplot with frame
p=ggplot(tf, aes(x=group, y=values, fill=group, frame= .frame)) +
  geom_bar(stat='identity', position = "identity")
gganimate(p, interval = .1, title_frame = F, filename="#288_barplot_animation.gif", ani.width=480, ani.height=480)

Мне было интересно,кто-нибудь знает, как заставить его работать, так как gganimate не работает на R 3.5.1, и я установил devtools::install_github("thomasp85/gganimate"), поэтому код другой.

1 Ответ

0 голосов
/ 02 декабря 2018

Этот код предназначен для исходной версии gganimate @drob, а не для текущей реинкарнации @ thomasp85.Новый стиль обрабатывает анимацию, добавляя шаги к вызову ggplot, поэтому tween_states заменяется на transition_states.Чтобы указать легкость, добавьте ease_aes.

library(ggplot2)
library(gganimate)

df <- rbind(
    data.frame(group = c("A","B","C"), values = c(3,2,4), frame = rep('a',3)),
    data.frame(group = c("A","B","C"), values = c(5,3,7), frame = rep('b',3))
)

ggplot(df, aes(group, values, fill = group)) + 
    geom_col(position = "identity") + 
    transition_states(frame, .02, .001) + 
    ease_aes('cubic-in-out')

Если вы хотите настроить fps или размер графика, назначьте график объекту и вызовите animate на нем с нужными настройками.Для сохранения используйте anim_save.

...