Я пытаюсь поближе познакомиться с пакетом 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")