tmap | R语言中专门绘制地图的工具包
tmap
工具包的名称是Thematic Maps的缩写,是R中专门绘制地图的工具包。该包语法与ggplot2
包比较类似,都是通过符合+
来进行图层叠加。
加载示例数据:
library(tidyverse)
library(sf)
usa <- albersusa::counties_sf(proj = "laea") %>%mutate(fips = as.character(fips)) %>%left_join(socviz::county_data, by = c("fips" = "id"))
加载工具包:
library(tmap)
该包加载极为费时,需要耐心等待。
我们首先来绘制一幅重分类地图。
tamp
中与绘图相关的函数都是以tm
或tmap
作为前缀进行命名的。tm_shape
函数的功能类似于ggplot2
包中的ggplot
函数,用来导入地图数据,不同点是在一幅图中tm_shape
可以多次使用。
导入地图数据后,就可以使用tm_fill
函数进行重分类绘图了,该函数的几个主要参数如下:
col:填充变量或颜色
alpha:透明度
palette:填充颜色
n:重分类数量,默认为5
style:重分类方式,可选项有 cat(分类变量)、 fixed(手动)、sd、equal(等间距)、 pretty、 quantile(等分位)、 kmeans、hclust、bclust、fisher、 jenks、dpih、 headtails、log10_pretty
break:当style = "fixed"时,使用该参数指定分类区间
不设置任何参数:
map00 <- tm_shape(usa) +tm_fill()
tmap_save(map00, "42-0.jpeg", dpi = 600)
以黑人占比变量black
为重分类依据:
map01 <- tm_shape(usa) +tm_fill(col = "black", style = "quantile", n = 4)
tmap_save(map01, "42-1.jpeg", dpi = 600)
tm_fill
函数只负责填充空间单元内部的颜色,如果要加上边界,可以使用tm_polygons
函数代替:
map02 <- tm_shape(usa) +tm_polygons(col = "black", style = "quantile", n = 4)
tmap_save(map02, "42-2.jpeg", dpi = 600)
或者在tm_fill
函数的基础上再叠加tm_borders
函数:
tm_shape(usa) +tm_fill(col = "black", style = "quantile", n = 4) +tm_borders(col = "black")
由于县级单元的边界太密,可以使用州边界,还可以使用点的大小标记各州的人口规模pop
:
tm_bubbles:使用点状要素表达变量大小
# from county to state
usa.state <- group_by(usa, state_fips) %>%summarise(pop = sum(pop))
st_write(usa.state, "G:/usa.state.shp", delete_layer = T)
usa.state <- st_read("G:/usa.state.shp")map03 <- tm_shape(usa) +tm_fill(col = "black", style = "quantile", n = 4) +# 叠加tm_shape函数tm_shape(usa.state) +tm_borders(col = "black") +tm_bubbles(size = "pop", col = "white")
tmap_save(map03, "42-3.jpeg", dpi = 600)
从上副图可以看出,图例与地图之间出现了重叠,可以使用tm_layout
函数调整布局:
inner.margins:内边距(地图与边框四周的距离)
outer.margins:外边框(边框与页面四周的距离)
legend.position:图例位置
map04 <- tm_shape(usa) +tm_fill(col = "black", style = "quantile", n = 4) +tm_shape(usa.state) +tm_borders(col = "black") +tm_bubbles(size = "pop", col = "white") +tm_layout(inner.margins = c(0.01, 0.15, 0.01, 0.01),legend.position = c(0.02, 0.2))
tmap_save(map04, "42-4.jpeg", dpi = 600)
添加指北针和比例尺:
tm_scale_bar:添加比例尺
tm_compass:添加指北针
map05 <- tm_shape(usa) +tm_fill(col = "black", style = "quantile", n = 4) +tm_shape(usa.state) +tm_borders(col = "black") +tm_bubbles(size = "pop", col = "white") +tm_layout(inner.margins = c(0.01, 0.15, 0.01, 0.01),legend.position = c(0.02, 0.2)) +tm_scale_bar(position = c(0.55, 0.02)) +tm_compass(position = c(0.02, 0.85))
tmap_save(map05, "42-5.jpeg", dpi = 600)
tmap
工具包还提供了一些主题风格,如classic主题:
tmap_style:设置绘图风格
tmap_style("classic")
map06 <- tm_shape(usa) +tm_fill(col = "black", style = "quantile", n = 4) +tm_shape(usa.state) +tm_borders(col = "black") +tm_bubbles(size = "pop", col = "white") +tm_layout(inner.margins = c(0.02, 0.15, 0.02, 0.02),legend.position = c(0.02, 0.2)) +tm_scale_bar(position = c(0.55, 0.02)) +tm_compass(position = c(0.02, 0.7))tmap_save(map06, "42-6.jpeg", dpi = 600)
# 返回默认主题风格
tmap_style("white")
主题风格一旦设置就会对所有
tmap
对象起作用,如果只想对部分地图设置主题,在使用后可以通过tmap_style("white")
返回默认主题。
tmap
包中主要绘图函数及其适用对象:
往期推荐阅读:
《数据处理通识》专辑-base | 使用apply族函数进行向量化运算
《制表与可视化》专辑-ggplot2 | ggplot2作图语法入门
《数学模型》专辑-car | 线性回归(三)——残差分析和异常点检验
《地理计算与分析》专辑-spdep | 如何在R语言中计算空间自相关指数
tmap | R语言中专门绘制地图的工具包相关推荐
- 技巧 | 在R语言中使用高德地图的API进行地理/逆地理编码(地址与经纬度的相互转换)...
高德地图和百度地图都提供了坐标拾取系统,通过坐标查询或坐标反查操作可以查询一个地址对应的经纬度或经纬度对应的地址名称.但是,手动查询的方式效率很低,也不能进行批量查询. 本篇就来介绍在R语言中调用高德 ...
- leaflet |(1)在R语言中导入高德地图
本号计划出几篇推文介绍leaflet这个工具包,它的功能是创建交互式网络地图(Create Interactive Web Maps),并添加各类要素.参考资料见网址:https://rstudio. ...
- leaflet (1)在R语言中导入高德地图
本号计划出几篇推文介绍leaflet这个工具包,它的功能是创建交互式网络地图(Create Interactive Web Maps),并添加各类要素.参考资料见网址:https://rstudio. ...
- R语言中的地理/投影坐标系统(下)[翻译]
原文链接:https://mgimond.github.io/Spatial/coordinate-systems-in-r.html. 译文分上.下两篇,这里为下篇. ❝ 「译者注」:在原文的本部分 ...
- raster | R语言中的空间栅格对象及其基本处理方法(Ⅰ)
前面的系列推文已经完成了对R语言中的两个管理空间矢量数据的工具包(sf和sp)的介绍,以及空间自相关.空间插值等空间分析方法. 这里小编再推出一个系列来介绍R语言中管理空间栅格数据的工具包:raste ...
- R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图、2D密度估计、MASS包中的kde2d函数实现2D密度估计、geom_density2d函数可视化二维密度图
R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图.2D密度估计.MASS包中的kde2d函数实现2D密度估计.geom_density2d函数可视化二维密度图 目录
- R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图
学习笔记的主要内容是在R语言中利用ggplot2进行PCA分析和绘图,包括简单分析与操作流程,对比不同方式得到的结果差异,提供脚本代码供练习. PCA分析的原理 在处理基因差异表达数据时,有时候需要分 ...
- R语言echarts4r包:绘制优雅动态图
文章目录 安装 使用 特性 快速开始 突然看到期待已久的echarts4r包0.3.2版上线cran了,值得写点内容,顺便温习下用法. echarts4是百度开源项目,是一款简单实用.图表优美的js动 ...
- 如何在R语言中建立六边形矩阵热图heatmap可视化
原文链接:http://tecdat.cn/?p=18879 这是一个六边形热图可视化程序,主要用到的知识RColorBrewer,fields,也就是R中的可视化绘图库(点击文末"阅读原文 ...
最新文章
- 如何为linux服务器配置DNS解析?
- 波士顿动力双足机器人Atlas放出逆天体操表演,网友:比我还强
- 阿里云直播PHP SDK如何使用
- 计算机中cmos设置程序,电脑主板上有CMOS设置是什么意思
- 自己用嵌入式系统搭建云服务器,嵌入式服务器搭建
- svd奇异值分解_NCL专辑 | 奇异值分解(SVD)
- 想基于K8s按需扩展应用程序,可从这几方面入手
- 七个重要习惯——读《高效能人士的七个习惯》整理
- 基于 Layui 的富文本编辑器和封面的实现方案
- excel vba 特殊符号
- linux编译有趣c程序,12个有趣的C语言问答(详解)
- win10语音语言服务器,win10系统:朗读女语音库(发音人)安装方法说明
- springCloud工作笔记090---SpringCloud_redis配置多数据源_redis多数据源
- 【SeaJS】【1】初识SeaJS
- python 爬虫基础——淘宝评论
- 玩转PS路径,轻松画logo!
- html table表格设置滚动条
- JDK代理模式学习笔记
- SSD1963 LCD驱动 FSMC接口,stm32f207【未完】
- JAVA 纯数字/金额数字转中文大写
热门文章
- 硬干货!一张图弄清楚在ESXi下如何进行网络抓包
- windows + Linux 自定义模板配置 怎么使用自定义规范管理器
- Spring Boot学习总结(20)——提升开发效率之热部署
- 鸿蒙系统怎么还不能用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- GhostBSD 19.04 发布,注重安全与稳定性的 FreeBSD 发行版
- 联合国儿童基金会投资六家区块链初创企业,目标是解决“全球性挑战”
- python学习之老男孩python全栈第九期_day009之初始函数初窥
- Cards and Joy CodeForces - 999F (贪心+set)
- VIM - 01. 标准模式 - 下简单操作
- python 返回列表中的偶数