假设我有这些数据,我想用ggplot2+制作动画gganimate。
library(ggplot2)
library(gganimate)
data <- data.frame(day = c(1:5, 1:5),
x = c(rep(2,5), rep(4, 5)),
y=c(rep(1, 5), rep(2, 5)))
data <- data[c(1:2, 4:10),]
动画/问题的目标是
1. 数据集中的每一天+x+y 点都有闪烁的红点(意味着那一天有一个观察值+x+y)。闪光应该非常简短。在它闪烁之后,它应该变成黑色的背景颜色(由shadow_mark控制)。请注意,我不希望点四处漂浮,只停留在它们所在的位置(请参阅此问题的解决方案:如何使 gganimate 中的点出现而不是过渡)。
没有。2。我还希望这些点在他们的一天开始时准确地开始闪烁。以下代码仅执行我想要的部分功能,但无法(完全)解决数字 1 和 2:
ggplot(data, aes(x,y, group=interaction(x,y))) +
geom_point(color="red", size=3) +
transition_time(day) +
shadow_mark(color="black", size=3) +
theme(plot.subtitle = element_text(hjust = 0.7)) +
labs(subtitle = paste('day: {frame_time}')) -> a
anim_save("test.gif", a, end_pause=6, width = 400, height = 450, duration=15)
这是生成的动画:
这有两个我希望解决的问题:
- 这些点不仅会瞬间闪烁,而且会闪烁太久。换句话说,我想简单地看到一个红点,然后是黑点,然后是红点,等等。
- 闪光开始的时间也有问题。如预期的那样,当点变为黑色时(因为
data(x=2,y=1) 点缺少第 3 天),就说明了这一点。然而,它在第 3 天中途变成黑色,并在第 4 天中途变回红色,但我希望它在第 3 天开始时准确地变成黑色,并在第 4 天开始时准确地闪烁红色。请注意,我不确定这个时间错位是否是由transition_time行为或字幕frame_time行为或其他原因引起的。
有什么建议么?

