I'm trying to build some teaching illustrations that illustrate how we sort points to build the emperical cumulative distribution function (ECDF). I thought it would be nifty to use
gganimate to show the points sliding from an unsorted state into a sorted state. I'm new to
gganimate so I pulled up some examples and gave it a go.
Below is my first attempt. I created a data frame that contains an unsorted set of points. I tagged these
sort_group=1 then I sort the points and assign new
sort_order and set
sort_group=2 in the data. I thought this would allow me to transition on
sort_group to go from the unsorted to the sorted.
library(gganimate) library(tidyverse) df <- tibble(vals = rnorm(100), key = 1:100) %>% mutate(sort_order = row_number(), sort_group=1) df %>% bind_rows(df %>% arrange(vals) %>% mutate(sort_order = row_number(), sort_group=2)) -> combined_data ggplot(combined_data) + aes(x = vals, y = sort_order, color=key) + geom_point() + theme_bw() + transition_time(sort_group) + ease_aes('linear') -> p animate(p, nframes = 75, renderer = gifski_renderer("gganim.gif"))
There's a problem with the above though... the dots are sliding along the x axis as if their
vals are changing. But each point keeps the same
key and the same
vals but gets a new
sort_order. So I would expect the see the points sliding vertically, some slide up, others down, into their new sort orders.
I'm quite sure the problem is that I am missing some basic concept of
ggamimate but I can't figure out what I'm doing wrong. Any tips?