I would like to document the progress in a test situation using gganimate: I have come so far:
library(tidyverse)
library(gganimate)
data <- tribble(~user, ~agree, ~accord, ~messung,
"1", .8, .9, 1,
"2",.7, .8, 1,
"3", .6, .9, 1)
data2 <- tribble(~user, ~agree2, ~accord2, ~messung2,
"1", .4, .7, 2,
"2", .5, .9, 2,
"3", .9, .9, 2)
data%>%
left_join(data2)%>%
mutate(user = as.numeric(user))%>%
ggplot(aes(x = accord, y = agree))+
geom_point(aes(fill = "grey"), color = "grey", size = 2)+
geom_point(aes(x = accord2, y = agree2), color = "green",
size = 2)+
xlim(0,1)+
ylim(0,1)+
geom_segment(aes(x = accord,
y = agree,
xend = accord2,
yend = agree2),
size = 0.5, arrow = arrow(type="closed", length =
unit(.08, "inches"), angle = 30),
color = "grey")+
theme_minimal()+
guides(fill=FALSE, color=FALSE)+
transition_manual(user)
The colours and representations are of secondary importance at first. It would be important to learn how to animate the points one after the other without the previous points disappearing again? Any help is welcome! Thanks
I wasn't able to get it working with transition_manual, but you can get the desired output using transition_states. If you want no transition, you can set transition_length to zero.
data%>%
left_join(data2)%>%
mutate(user = as.numeric(user)) %>%
ggplot() +
geom_point(aes(x = accord, y = agree), color = "grey", size = 2, fill = "grey") +
geom_point(aes(x = accord2, y = agree2), color = "green", size = 2)+
xlim(0,1)+ ylim(0,1)+
geom_segment(aes(x = accord, y = agree, xend = accord2, yend = agree2),
size = 0.5, color = "grey",
arrow = arrow(type="closed", length = unit(.08, "inches"), angle = 30))+
theme_minimal() +
# Use zero for "transition_length" to remove animation easing altogether
transition_states(user, transition_length = 1, state_length = 2) +
# shadow_mark(exclude_layer = 3) # This hides the arrow from animating
shadow_mark()
Maybe just create another dataframe that holds the previous observations, and add it using geom_point
:
## Your example:
dat <- data %>%
left_join(data2) %>%
mutate(user = as.numeric(user))
ggplot(dat) +
geom_point(aes(x = accord, y = agree)) +
geom_point(aes(x = accord2, y = agree2), color = "green") +
xlim(0, 1) +
ylim(0, 1) +
geom_segment(aes(
x = accord,
y = agree,
xend = accord2,
yend = agree2
)) +
transition_manual(user) -> p
# Now add:
rows <- unlist(sapply(2:nrow(dat), seq))
cols <- grep("agree|accord", names(dat), val = T)
df_points <- dat[rows, cols]
df_points$user <- rep(dat$user[-1], 2:nrow(dat))
p +
geom_point(aes(x = accord, y = agree), df_points) +
geom_point(aes(x = accord2, y = agree2), df_points, color = "green")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With