Today I finally read a tutorial on `gganimate`

, and here I will build my first example. My hope is to eventually simulate traversal on a directed graph.

```
library(tidyverse)
library(gganimate)
```

# Create Node Data

For this example, I will have 3 nodes (located at 3 vertices of a triangle), 100 dots distributed among the nodes, and a new placement over 21 states in time.

```
N <- 100 # number of dots
T <- 20 # number of iterations
node_names <- c("Node 1", "Node 2", "Node 3")
iter <- rep(0, N)
node <- rep("Node 1", N)
x <- 10 + rnorm(N, 0, 2)
y <- 20 + rnorm(N, 0, 2)
states <- data.frame(iter, node, x, y)
for(t in 1:T){
iter <- rep(t, N)
node <- sample(node_names, N, replace = TRUE)
x <- case_when(
node == "Node 1" ~ 10 + rnorm(N, 0, 2),
node == "Node 2" ~ 20 + rnorm(N, 0, 2),
TRUE ~ 30 + rnorm(N, 0, 2)
)
y <- case_when(
node == "Node 1" ~ 20 + rnorm(N, 0, 2),
node == "Node 2" ~ 30 + rnorm(N, 0, 2),
TRUE ~ 10 + rnorm(N, 0, 2)
)
this_state <- data.frame(iter, node, x, y)
states <- rbind(states, this_state)
}
```

# Plot Network

Having made a new set of data at each state, the main tool is to use `transition_states`

over the iterations.

```
states %>%
ggplot(aes(x = x, y = y)) +
geom_point(aes(color = node), alpha = 0.33) +
labs(title = "Draft of Network Animation",
subtitle = "Iteration: {closest_state} of 20",
caption = "Simulation of random placement") +
theme_minimal() +
transition_states(iter, transition_length = 1, state_length = 1)
```