前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tmap ! 绘制地图超方便,关键还能交互操作!绝了~~

tmap ! 绘制地图超方便,关键还能交互操作!绝了~~

作者头像
DataCharm
发布2024-07-31 12:04:35
1990
发布2024-07-31 12:04:35
举报
文章被收录于专栏:数据 学术 商业 新闻
  • 前言

  • 一、「tmap」-像ggplot2一样绘制超赞地图图表~~
  • 二、可视化学习圈子是干什么的?
  • 三、系统学习可视化
  • 四、猜你喜欢

前言

我们的数据可视化课程已经上线啦!!目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。课程免费新增,这点绝对良心!

我们第一个数据可视化交流圈子也已经上线了,主要以我的第一本书籍《科研论文配图绘制指南-基于Python》为基础进行拓展,提供「课堂式」教学视频,还有更多拓展内容,可视化技巧远超书籍本身,书籍修正和新增都会分享到圈子里面~~

参与课程或者圈子的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

「tmap」-像ggplot2一样绘制超赞地图图表~~

在我们的R语言可视化课程中,大部分的地图绘制都是使用R语言中的ggplot2和一些拓展绘图工具包完成的,大家学习起来也特别顺心~~

今天就给大家介绍一个和ggplot2类似的绘图语法地图绘制工具-「tmap」,那种超赞的出版级别地图更是可以一键绘制呢~

  • tmap绘图工具介绍

在R语言中,tmap(thematic maps)是一个强大的地图可视化工具包,专门用于创建各种类型的地图。它的设计目标是简化地图的制作过程,同时提供丰富的地图样式和交互功能。其功能和特点如下:

  1. 简单易用的语法: tmap提供了简洁而直观的语法,使得用户能够快速创建各种类型的地图,无论是基本地图还是具有丰富地理信息的专业地图。
  2. 支持各种地图类型: 可以创建静态地图、交互式地图和符号地图。静态地图适合于发布和打印,而交互式地图则允许用户在地图上进行交互和探索。
  3. 多种地图样式: tmap支持多种地图样式,包括等级符号图、色彩填充图、分级填充图等,使得用户可以根据数据的特点选择最合适的可视化方式。
  4. 地图元素控制: 用户可以通过tmap来控制地图的各种元素,如标题、图例、比例尺等,以便生成符合需求的专业地图。
  5. 空间数据处理: tmap能够直接处理空间数据,支持常见的地理空间数据格式,如Shapefile、GeoJSON等,同时也支持用于空间数据分析的其他R包。
  6. 地图交互和分层: 对于交互式地图,tmap允许用户通过添加分层的方式来呈现多个地理数据层,使得复杂的地理信息可以以清晰和互动的方式展示出来。
  • tmap绘图步骤

之所以和ggplot2绘图语法类似,是因为tmap中也有和ggplot2中,用于绘制不同图层对象的函数。如

  • 绘制文本有tm_text()函数;
  • 绘制X/Y轴标签有tm_x/ylab()函数;
  • 绘制空间线图有tm_lines()函数

而且,每一个绘图函数中都有着详细且复杂的修改参数,用于完成本图层的属性设置。

使用tmap包绘制地图可以分为以下几个基本步骤:

  1. 步骤一:加载必要的包和数据

首先,需要确保已经安装并加载了tmap包,同时准备好要用于地图绘制的空间数据。tmap通常与其他处理空间数据的包如sf(Simple Features for R)和sp(spatial)配合使用。

代码语言:javascript
复制
# 加载必要的包
library(tmap)
library(sf)  # 如果使用sf包处理空间数据

# 读取空间数据
# 这里举例使用sf包中的一个示例数据集
data(World)

  1. 步骤二:创建地图对象并设置样式

接下来,使用tmap中的tm_shape函数创建一个地图对象,并设置地图的基本样式,比如边界线、填充颜色等。

代码语言:javascript
复制
# 创建地图对象并设置样式
map <- tm_shape(World) +
         tm_borders()  # 添加国界线

在这个例子中,tm_shape函数用于指定绘制的空间对象(在这里是World),然后使用tm_borders函数添加国界线。

  1. 步骤三:添加其他地图元素

根据需要,可以进一步添加其他地图元素,如标题、图例、比例尺等,以增强地图的可读性和信息量。

代码语言:javascript
复制
# 添加标题和图例
map <- map +
         tm_layout(title = "World Map",  # 标题
                   legend.position = c("left", "bottom"))  # 图例位置
  1. 步骤四:调整地图样式和布局

可以根据具体需求调整地图的样式和布局,比如修改颜色、添加文本标注、更改地图投影等。

代码语言:javascript
复制
# 修改地图样式
map <- map +
         tm_fill(col = "lightblue") +  # 修改填充颜色
         tm_text("iso_a3")  # 添加国家代码文本标注
  1. 步骤五:显示和保存地图

最后,使用tmap包中的tm_view函数显示地图,或者使用tm_save函数保存地图到文件中。

代码语言:javascript
复制
# 显示地图
tm_view(map)

# 保存地图为PDF文件
tm_save(map, file = "world_map.pdf", width = 10, height = 8, dpi = 300)

以上就是使用tmap包绘制地图的步骤主要涉及加载数据、创建地图对象、设置样式和布局、添加元素,最后显示或保存地图。读者可以根据的绘图需求再额外添加其他图形类型。

  • tmap可视化案例

这一小节我们列举几个tmap绘制的地图可视化案例,我当初就是被这个案例“骗”来学习tmap的····

  1. choropleth with bubble map
代码语言:javascript
复制
# load example dataset
 data("metro")
 # draw dotstm_shape(metro) + 
tm_dots()
 # draw a bubble maptm_shape(metro) + 
tm_bubbles(“pop2020")
 # draw a colored bubble map
 tm_shape(metro) + 
tm_bubbles("pop2020", col = "growth")

# combine choropleth with bubble map
 tm_shape(World) +
 tm_polygons("income_grp") +
 tm_shape(metro) + 
tm_bubbles("pop2020", col = "growth")

当然,还可以一键修改绘图主题哦:

代码语言:javascript
复制
 ... +
 tm_style("classic")

交互式地图可通过如下步骤完成:

代码语言:javascript
复制
tmap_mode("view")

tm_shape(World) +
    tm_polygons("HPI")

此外,还可以进行分面交互地图的绘制呢:

代码语言:javascript
复制
tmap_mode("view")
tm_shape(World) +
    tm_polygons(c("HPI", "economy")) +
    tm_facets(sync = TRUE, ncol = 2)

好了,tmap还有很多好用的绘图函数等着大家探索呢,更多关于tmap工具包中的其他使用语法和绘图函数,感兴趣的同学可阅读:tmap工具包官网[1]

可视化学习圈子是干什么的?

可视化学习圈子是书籍「科研论文配图绘制指南-基于Python」一书的学下圈子:主要通过以下几个方面,给大家带来比纸质书籍更丰富的学习内容:

  • 视频教学,和读者零距离互动交流
  • 及时修正勘误和定期新增绘制知识点
  • 拓展衍生,绘图知识点远超书籍本身
  • 直播视频+拓展资料+答疑,学习更高效

「PS」:我们直播教学内容为课堂式教学,原作者带着大家对书籍一章、一节、一页的进行教学。而且直播的视频都会通过剪辑后整理成课程,圈子中的同学可以免费、反复观看。当然,新增内容和定期答疑,直播也是如此。

  • 为何会有这个书籍学习社群?无门槛的微信群难免会鱼龙混杂,问题和质量都无法得到保证,而且一些关键问题经常被淹没,且没有沉淀价值。
  • 随着添加我微信的人日益增多,向我提问的人也越来越多,随便回答一下就太不负责任了;不回答也不是很好;如果都仔细回答,我也有自己的工作并且确实很忙,真的有点心有余而力不足!所以我才会建立这么一个渠道来沉淀我的可视化技巧和分享经验,以及给大家提供一个坚持学习的平台。

微信扫描下方二维码即可参与我们的书籍学习圈子啦:

微信扫码即可加入学习圈子

系统学习可视化

当然,在学习数据可视化的道路上,你也有很多问题得不到解答,也可以加入我们的可视化课程(可视化系列课程推文)后,在学员群里和大家一起谈论,一起进步,或者直接向我提问。如果我觉得你的问题很具有普适性,我会把它写成文章发布在公众号上,让更多人看到,有关我们数据可视化系列课程的服务内容,可以参考下面的 阅读原文

猜你喜欢

不是?!这种图一行代码就搞定了,超简单....

这图这么多人问!?赶紧给大家复现出来~~..

ggpubr!一键绘制出版级论文配图,绘图小白福音......

tidyterra!空间数据处理、可视化神器...

Antarctic-Plots!不用ArcGIS,我照样可以画出惊艳的地图...

比Matplotlib合并子图更方便!patchworklib让我告别PS拼图...

Xarray,不用ArcGIS,所有地理空间绘图全搞定...

Nature都推荐的箱线图(Boxplot)绘制工具长啥样?免费、在线、灵活操作...?

完美解决Matplotlib绘图中、英文字体混显问题..

MATLAB绘图不好看?!不是,你是还没发现这几个工具包吧..

不是,这个地理数据工具这么强的吗?数据处理、可视化它都行..

这种环形图太难画?!带你一行代码搞定..

不是,这封面图这么多人问的吗?教程来了

不用Seaborn,这个工具也能绘制超炫的统计图形···

NetworkX,网络结构图最强绘制工具····· 参考资料

[1]

tmap工具包官网: https://r-tmap.github.io/tmap/index.html。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 「tmap」-像ggplot2一样绘制超赞地图图表~~
  • 可视化学习圈子是干什么的?
  • 系统学习可视化
  • 猜你喜欢
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档