Как сделать так, чтобы промежуток оси X перемещался с анимацией gganimate? - PullRequest
4 голосов
/ 14 июня 2019

Используя R, я пытаюсь создать линейный график, который отображается слева направо на основе оси X с использованием gganimate. Мне удалось сделать это, но я также хотел сделать так, чтобы scale_x_continuous (limit = c (i-5, i + 5)), то есть вокруг раскрываемой точки было окно, и окно будет двигаться дальше, пока обнаруживается следующая точка.

Я пробовал много способов получить это, включая реализацию своего рода цикла в scale_x_continuous с и без aes (). Ничто не похоже на работу. Я новичок в ggplot2, особенно в gganimate, но не могу найти какую-либо помощь онлайн. У меня такое чувство, что ответ, вероятно, довольно прост, и я просто пропустил его.

Вроде как, но с gganimate:

Аналогичный пример, но не с gganimate

Ниже приведен некоторый воспроизводимый код, который примерно покажет вам, что я сделал до сих пор.

library(ggplot2)
library(gganimate)
library(gifski)
library(png)


Step  <- c(1:50,1:50)
Name  <- c(rep("A",50), rep("B",50))
Value <- c(runif(50,0,10), runif(50,10,20))
Final <- data.frame(Step, Name, Value)

a <- ggplot(Final, aes(x = Step, y = Value, group = Name, color = factor(Name))) + 
 geom_line(size=1) + 
 geom_point(size = 2) + 
 transition_reveal(Step) + 
 coord_cartesian(clip = 'off') + 
 theme_minimal() +
 theme(plot.margin = margin(5.5, 40, 5.5, 5.5)) +
 theme(legend.position = "none") 

options(gganimate.dev_args = list(width = 7, height = 6, units = 'in', res=100))
animate(a, nframes = 100)

1 Ответ

2 голосов
/ 14 июня 2019

Не используйте transition, используйте view. E.g.:

ggplot(Final, aes(x = Step, y = Value, color = factor(Name))) + 
    geom_line(size = 1) + 
    geom_point() +
    view_zoom_manual(
        0, 1, pause_first = FALSE, ease = 'linear', wrap = FALSE,
        xmin = 1:40, xmax = 11:50, ymin = min(Final$Value), ymax = max(Final$Value)
    ) +
    scale_x_continuous(breaks = seq(0, 50, 2))

enter image description here

...