我感兴趣的是在每个帧的标题标签信息中使用时间间隔变量之外的替代变量。
包维护人员提到这通常是不可能的,但提供了一个小的变通示例
here
. 然而,在他的示例中,只有当使用的时间变量方便地匹配为数据帧中每个元素的索引时,它才起作用。
对于大多数其他应用程序,这是不现实的。例如
library(gganimate)
library(tidyverse)
stock <- bind_cols(date = round(as.numeric(time(EuStockMarkets)), 3),
EuStockMarkets) ## built-in dataset
stock %>% ggplot(aes(date, FTSE)) +
geom_line() +
transition_reveal(date) +
labs(title = "{stock$FTSE[frame_along]}")
NA
s显示为我的时间变量,不能强制转换为整数。即使我强制它,它也不会显示任何作为第一个元素的内容
1991.496
所以我想做一些像这样的过滤:
stock %>% ggplot(aes(date, FTSE)) +
geom_line() +
transition_reveal(date) +
labs(title = "{stock$FTSE[which(stock$date == frame_along)]}")
在玩了更多的游戏之后,我认为我的问题是我正在使用
which
stock <- bind_cols(date = as.integer(time(EuStockMarkets)),
EuStockMarkets)
stock <- stock %>% group_by(date) %>% summarise(ftse_sum = sum(FTSE))
stock %>% ggplot(aes(date, ftse_sum)) +
geom_line() +
transition_reveal(date) +
labs(title = "{stock$ftse_sum[which(stock$date == frame_along)]}")
工作,但这个总结数据集不是我感兴趣的。
我想把我的时间变量转换成整数(比如乘以1000),然后把它转换成适当的比例
scale_x_continuous
stock <- bind_cols(date = as.integer(round(as.numeric(time(EuStockMarkets)), 3)*1000),
EuStockMarkets)
stock %>% ggplot(aes(date, FTSE)) +
geom_line() +
scale_x_continuous(labels = function(x) x/1000) +
transition_reveal(date) +
labs(title = "{stock$FTSE[which(stock$date == as.integer(frame_along))]}")
再次返回到闪烁的动画,尽管我现在专门针对整型向量和来自的整型值进行过滤
frame_along
马可的建议: