使用R语言绘制简单地图的教程

今天主要讲的部分是绘制静态地图,使用的R语言绘图包是tmap,关于介绍就不多讲,下面开始代码的讲解,小白也可以放心食用。

1、绘制简单的单幅地图,这里以新西兰地区为例

R 复制代码
#导入必要的包
library(tmap)
library(sp)
library(spData)

# 只显示填充
tm_shape(nz) + 
  tm_fill()
# 只显示边界
tm_shape(nz)+
  tm_borders()
# 填充和边界都显示
tm_shape(nz)+
  tm_fill()+
  tm_borders()

通过上面的代码,事实上我们分别可以得到三个不同版本的地图,分别为"只显示填充"(左),"只显示边界"(中),"边界和填充都显示"(右)

传给tm_shape()的对象是nz,这个nz是代表新西兰地区的sf类型的对象,我们可以通过一行简单的代码查看一下nz的属性,如下:

注意:在实际使用中我们通常使直接使用tm_polygons()方法绘制填充和边界。

R 复制代码
tm_shape(nz) + tm_polygons()
# tm_polygons()函数就是把tm_fill() 和 tm_borders()合成了一个

2、绘制组图或者叫多幅地图

tmap可以提供"tmap"类的对象,我们可以把绘制好的地图暂存在tmap对象中,通过制作多个tmap对象来达到绘制组图的目的。

R 复制代码
#map1和map2就是tmap对象
map1 = tm_shape(nz) + tm_polygons(col = "Population")
map2 = tm_shape(nz) + tm_polygons(col = "Median_income")
#绘制组图
tmap_arrange(map1,map2)

这个组图的图例出现了一些问题,是由于图例太窄放不下文字造成的,另外我们还需要添加一些地图要素,如比例尺,指北针等等。可通过下面的代码来完成:

R 复制代码
map1 = tm_shape(nz) + tm_polygons(col = "Population") +
  tm_compass(position = c(0.8,0.8))+ 
  tm_layout(legend.width = 2)+
  tm_scale_bar(breaks = c(0,100,200),text.size = 1)
map2 = tm_shape(nz) + tm_polygons(col = "Median_income") +
  tm_compass(position = c(0.8,0.8))+ 
  tm_layout(legend.width = 2)+
  tm_scale_bar(breaks = c(0,100,200),text.size = 1)
tmap_arrange(map1,map2)

以上就是今天的内容,主要就是要熟练各类地图函数的参数设置,总结来说R语言绘制地图并不难。如果这个教程有帮到你,请点赞转发支持一下!我是加拿大一直黄花,我们下期再见。

相关推荐
前端摸鱼匠18 小时前
YOLOv8 环境配置全攻略:Python、PyTorch 与 CUDA 的和谐共生
人工智能·pytorch·python·yolo·目标检测
WangYaolove131418 小时前
基于python的在线水果销售系统(源码+文档)
python·mysql·django·毕业设计·源码
Monly2118 小时前
Java:修改打包配置文件
java·开发语言
AALoveTouch18 小时前
大麦网协议分析
javascript·python
我命由我1234518 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
ZH154558913118 小时前
Flutter for OpenHarmony Python学习助手实战:自动化脚本开发的实现
python·学习·flutter
island131418 小时前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络
xcLeigh18 小时前
Python入门:Python3 requests模块全面学习教程
开发语言·python·学习·模块·python3·requests
xcLeigh18 小时前
Python入门:Python3 statistics模块全面学习教程
开发语言·python·学习·模块·python3·statistics
YongCheng_Liang19 小时前
从零开始学 Python:自动化 / 运维开发实战(核心库 + 3 大实战场景)
python·自动化·运维开发