R-tmap 绘制带指北针和比例尺的空间地图
昨天有小伙伴在讨论群里提问"有没有关于绘制带比例尺和指北针的地图可视化教程",我也进行了答复,没想到关注的人比较多,那就安排推文教程(最近在系统整理资料,所以这篇也是计划外的
)。关注本公众号,后台回复"地图数据" 即可获取本推文所使用的数据。
02. tmap 简介
说起绘制空间数据相关的可视化作品,R语言还是比Python 要方便的多的
。这里我们就简单介绍下tmap 空间数据可视化绘图包,官网(https://mtennekes.github.io/tmap/) 还是有很多优秀的效果图的,如下:
值得注意的是,tmap 拥有类似于ggplot2 “图层” 语法绘图原理,熟悉ggplot2绘图的小伙伴肯定会快速上手的
。当然其也拥有较多的绘图函数,可是高度定制化自己的所需要的空间可视化作品。接下来,我们用一个具体例子对tmap 主要绘图函数进行说明。
03. 实例展示
这里我们使用中国shap文件(注:该文件不可以进行文章、期刊等出版,仅限教程使用)。本期推文所需的shp文件主要为:country、province、world三个shp文件和用于标注城市名的city文件。读取代码如下:
library(rgdal)
library(tmap)
library(tmaptools)
library(sp)
country <- readOGR("bou1_4l.shp")
province <- readOGR("province_polygon.shp")
#绘制世界底图背景
world <- readOGR("ne_50m_admin_0_countries.shp")
city <- read.csv("simplemaps-worldcities-basic.csv", header = TRUE)
city <- city[sample(1:nrow(city), 200),] # 随机筛选200个
coordinates(city) <- ~lng+lat
proj4string(city) <- CRS("+proj=longlat +datum=WGS84")
接下来,我们就使用tmap 包 对以上几个元素进行可视化绘制展示。具体代码如下:
# 绘图
map_test <- tm_shape(world,
xlim = c(70, 140),
ylim = c(0, 55)) +
tm_borders("grey40", lwd = 1.5) +
tm_grid(labels.size = 1)+
tm_shape(province) +
tm_fill(col = "lightgrey") +
tm_borders("grey60", lwd = 0.8) +
tm_shape(country) +
tm_lines(col="grey20", lwd = 1.8) +
tm_shape(city) +
tm_text("city", size=0.5)+
#添加比例尺
tm_scale_bar(position=c("left", "bottom"),text.size = 0.4) +
#添加指北针
tm_compass(type = "4star", position=c("left", "top")) +
tm_xlab("Longitude",size = 1) +
tm_ylab("Latitude",size = 1)+
tm_credits("Visualization by DataCharm",size=.6,position = c(0.8, 0.02),fontface = "bold")+
tm_style("classic")+
tm_layout(inner.margins=c(0.01,0.05,0.05,0.05))
map_test
知识点:
- 比例尺(Scale bar)添加
#添加比例尺
tm_scale_bar(position=c("left", "bottom"),text.size = 0.4) +
官网的一些主要属性如下:
- 指北针(Map compass)添加
#添加指北针
tm_compass(type = "4star", position=c("left", "top")) +
官网主要属性如下:
这里 指北针类型(type)主要如下:
"arrow"
, "4star"
, "8star"
, "radar"
, "rose"
. 文末都会有相应的样式结果。
- 主题风格 tm_style
tm_style("classic") +
其他风格还有:"white", "gray", "natural", "cobalt", "col_blind", "albatross", "beaver", "bw", "watercolor", "red", "black"。
设置风格可以省掉很多繁琐的绘图需求哦
。
上述主要结果如下:
其他风格(这里同时设置指北针和主题风格)
- tm_compass(type = "arrow", position=c("left", "top")) + tm_style("cobalt")
- tm_compass(type = "rose", position=c("left", "top")) + tm_style("natural")
(注:由于转换投影出错,也就没绘制其他投影下的效果。以前还是可以的
- MyEtherWallet 手动添加币乎代币(KEY)
- 玩转TensorFlow深度学习
- 如何在CDH实现HDFS透明加密
- 漏洞分析】Shiro RememberMe 1.2.4 反序列化导致的命令执行漏洞
- 机器学习算法再比较
- 区块链钱包开发
- 加密货币常见加密算法
- 如何给Kerberos环境下的CDH集群添加Gateway节点
- Spring Security OAuth RCE (CVE-2016-4977) 漏洞分析
- 高通量测序如何寻找T-DNA插入的位置
- 如何使用java命令从非集群节点向CDH集群提交MapReduce作业
- 【深度学习入门系列】TensorFlow训练线性回归
- 从老漏洞到新漏洞---iMessage 0day(CVE-2016-1843) 挖掘实录
- Wordpress <= 4.6.1 使用语言文件任意代码执行 漏洞分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法