前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-tmap 绘制带指北针和比例尺的空间地图

R-tmap 绘制带指北针和比例尺的空间地图

作者头像
DataCharm
发布2021-02-22 15:23:58
9170
发布2021-02-22 15:23:58
举报
文章被收录于专栏:数据 学术 商业 新闻

01. 引言

昨天有小伙伴在讨论群里提问"有没有关于绘制带比例尺和指北针的地图可视化教程",我也进行了答复,没想到关注的人比较多,那就安排推文教程(最近在系统整理资料,所以这篇也是计划外的

)。关注本公众号,后台回复"地图数据" 即可获取本推文所使用的数据。

02. tmap 简介

说起绘制空间数据相关的可视化作品,R语言还是比Python 要方便的多的

。这里我们就简单介绍下tmap 空间数据可视化绘图包,官网(https://mtennekes.github.io/tmap/) 还是有很多优秀的效果图的,如下:

值得注意的是,tmap 拥有类似于ggplot2 “图层” 语法绘图原理,熟悉ggplot2绘图的小伙伴肯定会快速上手的

。当然其也拥有较多的绘图函数,可是高度定制化自己的所需要的空间可视化作品。接下来,我们用一个具体例子对tmap 主要绘图函数进行说明。

03. 实例展示

这里我们使用中国shap文件(注:该文件不可以进行文章、期刊等出版,仅限教程使用)。本期推文所需的shp文件主要为:country、province、world三个shp文件和用于标注城市名的city文件。读取代码如下:

代码语言:javascript
复制
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 包 对以上几个元素进行可视化绘制展示。具体代码如下:

代码语言:javascript
复制
# 绘图
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)添加
代码语言:javascript
复制
#添加比例尺
tm_scale_bar(position=c("left", "bottom"),text.size = 0.4) +

官网的一些主要属性如下:

  • 指北针(Map compass)添加
代码语言:javascript
复制
#添加指北针
tm_compass(type = "4star", position=c("left", "top")) +

官网主要属性如下:

这里 指北针类型(type)主要如下:

"arrow", "4star", "8star", "radar", "rose". 文末都会有相应的样式结果。

  • 主题风格 tm_style
代码语言:javascript
复制
tm_style("classic") +

其他风格还有:"white", "gray", "natural", "cobalt", "col_blind", "albatross", "beaver", "bw", "watercolor", "red", "black"。

设置风格可以省掉很多繁琐的绘图需求哦

上述主要结果如下:

其他风格(这里同时设置指北针主题风格)

代码语言:javascript
复制
tm_compass(type = "arrow", position=c("left", "top")) +
tm_style("cobalt")
代码语言:javascript
复制
tm_compass(type = "rose", position=c("left", "top")) +
tm_style("natural")

(注:由于转换投影出错,也就没绘制其他投影下的效果。以前还是可以的

,查了github,作者也说过应该是版本更新导致。后面会继续跟进的。)

04. 总结

本期推文介绍了大家比较关心的绘制空间数据 指北针 和 比例尺的添加方法。而基于ggplot2 以及拓展包 ggspatial 也是可以绘制的,由于不是很熟悉空间数据的处理,介绍难免不足。大家可以去官网进行查看。当然,你也可以进群讨论哦

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01. 引言
  • 02. tmap 简介
  • 03. 实例展示
  • 04. 总结
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档