gganimate :: transition_time () переходы между несуществующими наблюдениями - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь поближе познакомиться с пакетом gganimate.При этом я заметил, что transition_time(time), похоже, не обязательно использует точные значения в time, но что-то заполняет. В приведенном ниже data.frame есть 41 дата в переменной time.Из того, что я понимаю, я ожидал бы transition_time(time) только переход между этими 41 датами.

В приведенном ниже коде я также использую geom_rect, чтобы закрасить фон на основе значений в category.Глядя на вывод df.gif, когда фон белый, transition_time(time), похоже, использует значение time, для которого нет реальных наблюдений.Кроме того, в некоторых случаях кажется, что наблюдения являются своего рода «вмененным», то есть существует переход между реальными наблюдениями с несколькими шагами между ними, для которых нет наблюдений.

Возможно, это не проблема, но из-за моего непонимания, как это на самом деле работает.В любом случае, любые указатели очень ценятся, спасибо!

df <- structure(list(time = structure(c(12174, 12179, 12180, 12181, 
12189, 12191, 12193, 12198, 12199, 12200, 12201, 12202, 12203, 
12205, 12206, 12207, 12208, 12209, 12210, 12211, 12212, 12213, 
12214, 12215, 12216, 12217, 12218, 12219, 12220, 12221, 12222, 
12223, 12224, 12225, 12226, 12227, 12228, 12229, 12230, 12231, 
12232), class = "Date"), lon = c(37.0615319203799, 37.0716477974754, 
37.0615319203799, 37.0923434723092, 37.0923434723092, 37.0507170659893, 
37.1042645986751, 37.1042645986751, 37.0716477974754, 37.0507170659893, 
37.0507170659893, 37.0923434723092, 37.0716477974754, 37.047738185691, 
37.0906383964751, 37.066505639265, 37.1069135660838, 37.0808814378127, 
37.066505639265, 37.0808814378127, 37.1069135660838, 37.066505639265, 
37.1069135660838, 37.0906383964751, 37.047738185691, 37.1069135660838, 
37.1069135660838, 37.0808814378127, 37.066505639265, 37.0808814378127, 
37.047738185691, 37.066505639265, 37.0906383964751, 37.047738185691, 
37.1069135660838, 37.0808814378127, 37.066505639265, 37.0906383964751, 
37.066505639265, 37.0906383964751, 37.0808814378127), lat = c(-2.7411848459376, 
-2.71292701762913, -2.7411848459376, -2.72165547518141, -2.72165547518141, 
-2.73329474303528, -2.71147633070969, -2.71147633070969, -2.71292701762913, 
-2.73329474303528, -2.73329474303528, -2.72165547518141, -2.71292701762913, 
-2.73075363771866, -2.71197727883059, -2.7343739141538, -2.71507451885925, 
-2.71061194970373, -2.7343739141538, -2.71061194970373, -2.71507451885925, 
-2.7343739141538, -2.71507451885925, -2.71197727883059, -2.73075363771866, 
-2.71507451885925, -2.71507451885925, -2.71061194970373, -2.7343739141538, 
-2.71061194970373, -2.73075363771866, -2.7343739141538, -2.71197727883059, 
-2.73075363771866, -2.71507451885925, -2.71061194970373, -2.7343739141538, 
-2.71197727883059, -2.7343739141538, -2.71197727883059, -2.71061194970373
), group = c("D", "A", "D", "E", "E", "C", "B", "B", "A", "C", 
"C", "E", "A", "C", "A", "D", "B", "E", "D", "E", "B", "D", "B", 
"A", "C", "B", "B", "E", "D", "E", "C", "D", "A", "C", "B", "E", 
"D", "A", "D", "A", "E"), category = c("High", "High", "High", 
"High", "High", "High", "High", "High", "High", "High", "High", 
"High", "High", "Low", "Low", "Low", "Low", "Low", "Low", "Low", 
"Low", "Low", "Low", "Low", "Low", "Low", "Low", "Low", "Low", 
"Low", "Low", "Low", "Low", "Low", "Low", "Low", "Low", "Low", 
"Low", "Low", "Low")), row.names = c(NA, -41L), class = c("tbl_df", 
"tbl", "data.frame"))
gif <- df %>% 
  mutate(group=factor(group), category=factor(category)) %>%
  ggplot() +
  geom_rect(aes(xmin=37.00, xmax=37.21, ymin=-Inf, ymax=Inf, fill=category), alpha=0.5, show.legend=T) + 
  geom_jitter(aes(x=lon, y=lat), size=5, width=0.02, height=0.02) +
  labs(x="Longitude", y="Latitude") +
  scale_x_continuous(limits=c(37.00, 37.21), expand=c(0,0)) +
  theme(panel.background=element_blank(), 
        axis.ticks.length=unit(0.25,"cm"),
        axis.ticks.x=element_line(size=0.2),
        axis.ticks.y=element_line(size=0.2),
        axis.line.x=element_line(size=0.2),
        axis.line.y=element_line(size=0.2),
        plot.margin=margin(t=5.5, r=5.5, b=5.5, l=5.5)) +
  transition_time(time) +
  view_follow(fixed_x=T, fixed_y=T) +
  labs(title = '{frame_time}') +
  ease_aes('linear')

animate(gif, height=500, width=500, duration=70, renderer=gifski_renderer()) # use duration to slow it down
anim_save("df.gif")

df

...