【问题标题】:Animate Map in R ggplotR ggplot中的动画地图
【发布时间】:2020-07-13 21:13:44
【问题描述】:

我正在使用 R 和库 gganimate,并且有一个多边形数据框和一个点数据框:

这是多边形数据框(poly):

 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

这是点数据框(points):

   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)

【问题讨论】:

  • 我正在寻找动画,一些 javascript 可能有用。考虑使用leaflet。除了一些闪亮的东西,它可能会完成这项工作。

标签: r gis


【解决方案1】:

您遇到的问题可能是您的月份变量的格式。 transition_time() 要求数据采用时间格式,但您的数据框显示 monthdbl 格式。

尝试使用transition_states(),因为该命令可以更灵活地使用数据。 transition_states() 也会让您的多边形图层保持静态,如您所愿。

【讨论】:

  • 很高兴@Augosto 有帮助。如果您认为值得一票,您可以将帖子标记为这样吗?
  • 嗨@Ben,我知道这是一个旧答案,但你能详细说明静态多边形图层部分吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
相关资源
最近更新 更多