gganimate:具有不同几何形状和时间点的两层 [英] gganimate: two layers with different geometries and timepoints

查看:88
本文介绍了gganimate:具有不同几何形状和时间点的两层的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题类似于

The problem is similar to this question but here the two layers use different geometries, geom_tile and geom_point. The idea is to have tiles show up at different locations only in frames 2, 5, 8, and the point move along the diagonal in every frame.

When trying to run the following example, I get the error:

Error: time data must be the same class in all layers

Example

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, 5, 9),
                  y = c(9, 5, 1),
                  t = c(2, 5, 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,
               aes(x = x,
                   y = y),
               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)

解决方案

Does the following work for you?

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)

这篇关于gganimate:具有不同几何形状和时间点的两层的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆