问题描述
问题类似于this问题,但此处两层使用不同的几何形状geom_tile
和geom_point
。想法是让图块仅在第2、5、8帧中的不同位置显示,并且该点在每帧中沿对角线移动。
尝试运行以下示例时,出现错误:
错误:时间数据在所有图层中必须是同一类
示例
require(data.table)
require(ggplot2)
require(gganimate)
# 3 tiles along x = 10-y; present at time points 2,5,8
dtP1 = data.table(x = c(1,9),y = c(9,1),t = c(2,8))
# 9 points along x=y; present at every time point
dtP2 = data.table(x = 1:9,y = 1:9,t = 1:9)
p = ggplot() +
geom_tile(data = dtP1,aes(x = x,y = y),color = "#000000") +
geom_point(data = dtP2,color = "#FF0000") +
gganimate::transition_time(t) +
gganimate::ease_aes('linear')
pAnim = gganimate::animate(p,renderer = av_renderer("~/test.mp4"),fps = 1,nframes = 9,height = 400,width = 400)
解决方法
以下为您工作吗?
library(dplyr)
p <- rbind(dtP1 %>% mutate(group = "group1"),dtP2 %>% mutate(group = "group2")) %>%
tidyr::complete(t,group) %>%
ggplot(aes(x = x,y = y)) +
geom_tile(data = . %>% filter(group == "group1"),color = "black") +
geom_point(data = . %>% filter(group == "group2"),color = "red") +
ggtitle("{frame_time}") + # added this to show the frame explicitly; optional
transition_time(t) +
ease_aes('linear')
animate(p,nframes = 9,fps = 1)