Анимировать карту в R ggplot - PullRequest
0 голосов
/ 14 июля 2020

Я использую R и библиотеку gganimate и имею фрейм данных полигона и фрейм данных точки:

Это фрейм данных полигона (поли):

 long    lat order hole  piece    id group T_P_0_14 T_P_15_64 T_P_65mas  P_TOT P_TOT_HOM
   <dbl>  <dbl> <int> <lgl> <fct> <dbl> <fct>    <dbl>     <dbl>     <dbl>  <dbl>     <dbl>
1 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
2 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
3 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
4 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
5 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
6 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
7 5.80e5 6.14e6  2883 FALSE 1        10 10.1     25523    122781     38716 187020     83348
8 5.80e5 6.14e6  2884 FALSE 1        10 10.1     25523    122781     38716 187020     83348
9 5.80e5 6.14e6  2884 FALSE 1        10 10.1     25523    122781     38716 187020     83348

И это кадр данных точки (точки):

   codigo  anio   month ascensos coords.x1 coords.x2
   <int> <dbl> <dbl>    <int>     <dbl>     <dbl>
1    546  2013     1      489   578024.  6140711.
2    546  2013     2      403   578024.  6140711.
3    546  2013     3      504   578024.  6140711.
4    546  2013     4      556   578024.  6140711.
5    546  2013     5      505   578024.  6140711.
6    546  2013     6      481   578024.  6140711.
7    546  2013     7      477   578024.  6140711.
8    546  2013     8      512   578024.  6140711.
9    546  2013     9      459   578024.  6140711.

Я пытаюсь создать анимированный график, используя gganimate, используя месяц в качестве переменной перехода, потому что я хочу видеть эволюцию значений точек с течением времени в месяцах. Однако анимация показывает движение в точках, что невозможно, потому что они зафиксированы. Вместо этого я хочу показать изменение цвета этих точек, которое зависит от переменной ascensos.

Как я могу это исправить? есть идеи?

Большое спасибо

ggplot() +
 geom_polygon(data = poly %>% mutate(Macrozona=as.factor(id)),
              aes(x = long, y = lat, group = group),
              colour = "black")+
 geom_point(aes(x=coords.x1, y=coords.x2, color=ascensos), data=points %>% filter(anio==2019), 
               alpha=0.1)+
 scale_color_gradient(low="blue", high="red")+
 labs(subtitle = paste('Month: {frame_time}'))+
 transition_time(month)

1 Ответ

1 голос
/ 14 июля 2020

Проблема, с которой вы столкнулись, может быть связана с форматом переменной месяца. transition_time() требует, чтобы данные были в формате времени, но ваш фрейм данных показывает, что month является форматом dbl.

Попробуйте использовать вместо него transition_states(), так как эта команда может использовать данные более гибко. transition_states() также сохранит состояние вашего многоугольного слоя c по вашему желанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...