900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > tmap | 制作地图动画 放大局部区域

tmap | 制作地图动画 放大局部区域

时间:2022-12-16 20:47:08

相关推荐

tmap | 制作地图动画 放大局部区域

专注系列化、高质量的R语言教程

tmap是R语言中比较专业的地理绘图工具包。前面已经有一期推文介绍了它的基础功能,详见tmap | R语言中专门绘制地图的工具包。

本篇再来介绍两个功能:制作地图动画和放大局部区域(二者没有必然联系,只是内容较少放在同一篇推文中)。

1 制作地图动画

本部分主要参考的是《Geocomputation with R》9.3节[1]的内容。

示例数据是来自spData工具包中的urban_agglomerations。这是一个长数据:一个城市聚集区对应多行数据,每行对应一个年份。

library(spData)head(urban_agglomerations,5)##indexyearrank\nordercountry\ncodecountry_or_areacity_code##111950632Argentina8##221955532Argentina8##331960632Argentina8##441965532Argentina8##551970532Argentina8##urban_agglomerationnotepopulation_millionsgeometry##1BuenosAires15.166140-58.40037,-34.60508##2BuenosAires15.910271-58.40037,-34.60508##3BuenosAires16.761837-58.40037,-34.60508##4BuenosAires17.548511-58.40037,-34.60508##5BuenosAires18.416170-58.40037,-34.60508

在进行绘图时,可以根据year变量进行分面。tm_facets()函数有两种分面方式:

by参数:普通分面;所有分面位于同一绘图页面;

along参数:每个分面占据一个独立的绘图页面。

我们在这里使用along参数进行分面:

library(sf)library(tmap)urb_anim<-tm_shape(st_union(world))+tm_polygons()+tm_shape(urban_agglomerations)+tm_dots(size="population_millions")+tm_facets(along="year",free.coords=FALSE)urb_anim

在绘图窗口,可以通过点击如下红框内的左、右箭头切换分面:

再运行类似下面的语句,就可在本地保存地图动画:

tmap_animation(urb_anim, filename = "E:/urb_anim.gif", delay = 25)

若提示Package gifski is required for gif animations but not installed,请先安装gifski工具包。

2 放大局部区域

放大局部区域的方法也很简单,只需要指定tm_shape()函数的bbox参数即可:

urban_2035<-subset(urban_agglomerations,year=="2035")bb<-st_bbox(urban_agglomerations)bb[1:4]<-c(70,0,140,55)bb##xminyminxmaxymax##70014055tm_shape(st_union(world),bbox=bb)+tm_polygons()+tm_shape(urban_agglomerations)+tm_dots(size="population_millions")

bb中的四个元素分布表示经、纬度的下限和上限值。

参考资料

[1]

Geocomputation with R:/adv-map.html#prerequisites-6

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。