Я использую gganimate для наложения данных отслеживания животных поверх доступности добычи , причем оба анимированных по времени показывают, как изменяются движения животных по мере изменения доступности добычи.
Набор данных отслеживания состоит из
- переменной sumDur
- широта и долгота
- с часовыми интервалами
Набор данных добычи состоит из
- значения энергии
- широты и долготы
- с недельными интервалами
Пример фреймов данных
head(Tracks)
sumDur lon2 lat gmt
30641 0.0000000 -170.2978 57.10774 2004-08-18 05:05:00
29380 0.0000000 -170.3264 57.05684 2004-08-18 06:00:00
29381 10.0833333 -170.3565 57.00376 2004-08-18 07:00:00
29382 3.0833333 -170.3859 56.95370 2004-08-18 08:00:00
29383 0.8333333 -170.4147 56.90687 2004-08-18 09:00:00
29384 2.6666667 -170.4429 56.86301 2004-08-18 10:00:00
head(Prey)
# A tibble: 6 x 4
TotalEnergyM2 lat lon2 gmt
<dbl> <dbl> <dbl> <dttm>
1 0 50 160 2004-01-01 00:00:00
2 0 50 162. 2004-01-01 00:00:00
3 0.0000193 50 180. 2004-01-01 00:00:00
4 0 50.3 -151. 2004-01-01 00:00:00
5 38.3 53.9 -158 2004-01-01 00:00:00
6 31.4 53.9 -158. 2004-01-01 00:00:00
Цель
Мне удалось успешно анимировать данные отслеживания поверх статической среды, а такжеанимировать данные добычи без данных отслеживания.
Моя проблема заключается в попытке создать одну из двух анимаций - я получаю анимацию, но время каждой анимации неверно, хотя я знаю, что время перекрывается.
Я считаю, что это вызвано тем, что длина кадра моего временного столбца (gmt) не одинакова в каждом кадре данных;в моем фрейме данных отслеживания временной шаг равен одному часу, а в фрейме данных добычи временной шаг равен одной неделе.К сожалению, я не могу проверить это, потому что дата-фрейм жертвы слишком велик, чтобы реплицировать его с часовым шагом.Я поиграл с некоторыми из различных переходов (например, transition_state
), но не увенчался успехом и не смог найти никаких решений ни здесь, ни где-либо еще.
Любая помощь будет очень признательна и извинится заранее, если я не предоставил достаточно информации или форматирование отключено - это мой первый пост.
Пример кода
plot <- ggplot(NULL) +
geom_raster(data=Prey, aes(x=lon2, y=lat2, fill=TotalEnergyM2) +
geom_point(data=Tracks, aes(x=lon2, y=lat2, size=sumDur)) +
scale_fill_viridis_c()+
transition_time(gmt)+
ease_aes("linear")+
labs(title="{frame_time}", x="Longitude", y="Latitude")
animate(plot)
Приведенный выше код отлично работает, если я закомментирую geom_raster или geom_point, чтобы получить отдельные анимации, или если geom_raster является статическим.Я прикрепил ссылку на два файла данных с поддельными данными, которые работают с вышеуказанным кодом и воспроизводят проблемы, которые у меня возникают datafiles .