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?
