绘图技巧 | 双变量映射地图可视化绘制方法

本期推文我们绘制不常见的双变量主题地图,该类地图可以很好的在地图上用颜色展示两个变量的信息,相较于单一变量映射地图,此类地图表达的信息更加丰富和全面。本期推文主要涉及的内容如下:

  • 双变量映射地图(Bivariate Choropleth Map)简介

  • R-ggplot2+biscale 轻松绘制双变量映射地图

  • 更多详细的数据可视化教程,可阅读我们的课程店铺:

Bivariate Choropleth Map

在绘制地图时,我们常常使用单一变量进行映射处理,当然,这样展示的结果可以很好的表现我们研究的特征(如收入、房价等)的变化情况或者具体的情况,如下图:

单一变量映射地图

首先,我们先通过通过下图来简单解释下双变量映射的含义:

  1. 首先我们创建单一变量的3级顺序配色色系。色系从较浅的中性色开始,代表第一个变量的最小值。色系颜色逐渐变暗,并朝着您代表较高值的色相饱和。中间色应与底色具有相同的色相,但其饱和度应较低而亮度较高,如下:

  2. 根据第一步,我们再创建一个色系,色系颜色含义类似,如下:

  3. 我们将所选择的6种颜色经过旋转拉伸等操作,即可获得 如下效果:

    4.双变量配色色系的数值表示可以用以下这幅图表示:

    此外,我们还可以使用A,B或C标记水平方向的单元格,用1、2或3标记垂直方向的单元格:如下:

(注:以上双变量简介参考资料:Bivariate Choropleth Maps: A How-to Guide[1])

R-ggplot2+biscale 轻松绘制双变量映射地图

在简单介绍完之后,接下来,我们使用R语言的biscale、ggplot2以及cowplot包完成此类地图的绘制。R-biscale包是专门为了绘制双变量映射地图而产生的R绘图包,其官网为:https://slu-opengis.github.io/biscale/articles/biscale.html,目前支持2×2和3×3的二元映射,以下为官网提供的样例,更多例子及函数用法,大家可以参考官网:

「样例01」

「样例02」

two-by-two palettes

three-by-three palettes

接下来,我们使用具体的例子介绍使用biscale包绘制双变量映射地图教程。这里的数据地图数据和指标数据分别来自albersusa和socviz包,albersusa包提供了美国标准地图地图文件数据,socviz包则提供了许多常用的指标数据,这两个包也为绘制美国地图省去了寻找数据的时间(小编可是找了好久的数据,最后才找到这个宝藏包哦~~),话不多说,我们直接上代码,具体如下:

「数据处理」

library(albersusa)
country_sf <- albersusa::counties_sf(proj = "laea")
usa_map <- ggplot() + geom_sf(data = country_sf,size=.125) +theme_ipsum(base_family = "Roboto Condensed")
usa_map

可视化预览效果如下:

具体的数据格式如下:

counties <- counties_sf()
head(counties)

而我们选择socviz包中的数据操作代码如下:

us_data <- socviz::county_data %>% select(id,fips,name,state, pop,hh_income,travel_time)
head(us_data)

接下来,我们将两种数据(地图数据+指标数据)根据fips编码进行合并,需要注意的是我们需要将地图文件中fips列转换成字符串类型,详细代码如下:

counties <- mutate(counties,fips=as.character(fips)) #mutate()生成新列
bio_data <- left_join(counties,us_data,by = c("fips"="id"))

最后,我们使用biscale::bi_class()方法将合并后的数据转换成可用于绘制双变量映射的数据集,代码如下:

process_data <- biscale::bi_class(bio_data,x = hh_income,y = travel_time,style = "quantile",dim = 3)
head(process_data)

注意:红框中的数据就是我们用于映射的数据集,接下来,我们进行可视化展示:

「可视化绘制」: 在此之前,我们需将绘制数据使用sf::st_transform()进行投影转换,使其更好的展示美国地图,代码如下:

process_data_2163 <- sf::st_transform(process_data,crs = 2163)

可视化绘制代码如下:

usa_bivar_2163_them <- ggplot() +geom_sf(data = process_data_2163, mapping = aes(fill = bi_class), color = "black", size = 0.025, show.legend = FALSE) +bi_scale_fill(pal = "DkBlue", dim = 3) +labs(title = "Example Bivariate choropleth Map of <span style='color:#D20F26'>USA</span>",subtitle = "Dark Blue (DkBlue) Palette in <span style='color:#1A73E8'>biscale</span>",caption = "Visualization by <span style='color:#DD6449'>DataCharm</span>" ) +bi_theme() +theme(plot.title = element_markdown(hjust = 0.5,vjust = .5,color = "black",size = 24, margin = margin(t = 1, b = 12)),plot.subtitle = element_markdown(hjust = 0,vjust = .5,size=15),plot.caption = element_markdown(face = 'bold',size = 12,hjust = 1))
usa_bivar_2163_them

可视化效果如下:

「双变量图例绘制」

biscale包也提供了用于绘制双变量映射地图图例的简单绘制方法,对于本例子,图例绘制如下:

legend_us <- bi_legend(pal = "DkBlue",dim = 3,xlab = "Higher Income ",ylab = "Higher Travel Time ",size = 6) 
legend_us

图例效果如下:

legend

最后,我们使用cowplot包进行图片组合即可:

library(cowplot)
# combine map with legend
finalPlot <- ggdraw() +draw_plot(usa_bivar_2163_them, 0, 0, 1, 1) +draw_plot(legend_us, .58, .05, 0.2, 0.2)
finalPlot

最终效果如下:

总结

双变量映射地图其实在很早的时候就准备进行绘制了,虽然查阅到相关绘制资料,但其较多的代码量是我一直不敢写教程(怕自己还没整明白,误导小伙伴们),但是有了biscale包就可以较简单的进行绘制了,这里需要夸下R-ggplot2绘图体系真的十分完善哦好了,本篇推文就结束了,文本需要绘制的数据都可以直接通过安装相应的包进行获取,希望大家可以好好练习下哦~~

参考资料

[1]

Bivariate Choropleth Maps: A How-to Guide: https://www.joshuastevens.net/cartography/make-a-bivariate-choropleth-map/。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/771449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PPT录制视频保存在哪?我来告诉你答案

在如今的信息化时代&#xff0c;ppt已经成为了工作中必不可少的工具。而ppt录制视频能够更好地展示ppt内容&#xff0c;方便观众随时随地观看。可是很多人不知道ppt录制视频保存在哪&#xff0c;本文将为您介绍ppt录制视频的保存位置&#xff0c;为读者提供关于ppt录屏的实用技…

[Linux]知识整理(持续更新)

前言 Linux的目录结构 Linux的目录结构是一个树型结构 Windows 系统可以拥有多个盘符, 如 C盘、D盘、E盘 Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面 Linux路径的描述方式 第一章 基本命令 命令格式 例:ls –la /etc 说明: 1)个别命令使用不遵循…

ELMOS

where L W o L_{Wo} LWo​() is the o-th softmax classifer&#xff0c; L U o L_{Uo} LUo​() is the o-th projector 辅助信息 作者未提供代码

16:00面试,16:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

使用LLaVA模型实现以文搜图和以图搜图

本文将会详细介绍如何使用多模态模型——LLaVA模型来实现以文搜图和以图搜图的功能。本文仅为示例Demo&#xff0c;并不能代表实际的以文搜图和以图搜图的技术实现方案。 1、实现原理 使用多模态模型获取图片的标题和详细描述以文搜图功能&#xff1a;使用ES实现查询匹配&…

Qt 计算两条直线QLineF的重叠部分,如何存在则返回该直线

计算两条直线QLineF的重叠部分 效果 使用示例 QLineF intersection;bool isSuccess GetOverlapSegment(line1, line2, intersection);源码 // 判断两个QLineF对象在斜率相同时是否存在重叠部分 bool DoLineOverlapWithSameSlope(const QLineF& line1, const QLineF&…

为什么说用了10年C++的程序员也不敢说自己精通C++?

在编程领域&#xff0c;C无疑是一门具有极高复杂度和深度的语言&#xff0c;它以其卓越的性能、灵活性和广泛的应用范围赢得了众多开发者青睐。然而&#xff0c;一个现象令人深思&#xff1a;即使有程序员使用C长达十年之久&#xff0c;他们仍可能谦逊地表示自己并未真正“精通…

Cartoon FX Remaster

“卡通FX重制”是一个风格化的粒子系统预制件集合。您可以使用附带的“卡通FX简易编辑器”轻松自定义每个效果的颜色和其他属性。 卡通FX Remaster是卡通FX包1的新版本,从头开始重新制作了全新的效果。 ⭐新:通过卡通FX重制捆绑包,以20%的折扣获得所有4个卡通FX重制包! 50多…

python.类

1.类用class定义 name等是属性 是成员变量 定义完类了要定义对象 class Student: #定义了一个Student的类nameNoneageNonegenderNonesdu1Student() #创建了一个Student类的对象 sdu1.nameleo sdu1.age20 sdu1.gendermaleprint(sdu1.name) print(sdu1.age) print(sdu1.…

【数据分享】1929-2023年全球站点的逐月平均海平面压力(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

Vue.js 3.4的新特性

Vue.js 3.4的新特性 目前&#xff0c;Vue.js的版本已经更新到3.4&#xff0c;这次更新不仅带来了性能上的飞跃&#xff0c;还引入了许多新特性&#xff0c;进一步优化了开发效率。 1. 性能提升 在性能方面&#xff0c;Vue.js 3.4 全新重写了模板解析器。与之前基于正则表达式…

Matlab从入门到精通课程

教程介绍 MATLAB是美国MathWorks公司出品的商业数学软件&#xff0c;用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人&#xff0c;控制系统等领域。 学习地址 链接&#xff1a;https://pan.baidu.com/s/1PxGarBwQusMzwPVqcE…

RAG笔记:常见问题以及解决方法

1 内容缺失 知识库中缺少必要的上下文信息。当知识库没有包含正确答案时&#xff0c;RAG 系统可能会给出一个貌似合理但实际上错误的回答&#xff0c;而不是明确表示它不知道答案。 1.1 解决方法 1.1.1 设置阈值 在回答问题前先设定一个质量标准。如果召回内容达不到标准或…

Vulnhub:DR4G0N B4LL: 1

目录 信息收集 1、arp 2、nmap WEB web信息收集 gobuster 隐藏目录发现 图片隐写 ssh登录 提权 get user 系统信息收集 get root 信息收集 1、arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l …

基于yolov8安全帽检测的系统

基于yolov8安全帽检测的系统 项目描述&#xff1a; 安全头盔检测&#xff08;计算机视觉&#xff09; 1.自训练数据集1538张数据图片&#xff0c;进行标注&#xff0c;并进行100轮的训练&#xff0c;准确率达0.966 2.使用 Flask 和 Ultralytics YOLOv8 模型开发了一个 Web 应…

打造高效自动化渗透测试系统:关键步骤与实践

随着当前网络安全威胁的不断扩展与升级&#xff0c;开展渗透测试工作已经成为广大企业组织主动识别安全漏洞与潜在风险的关键过程。然而&#xff0c;传统的人工渗透测试模式对测试人员的专业能力和经验水平有很高的要求&#xff0c;企业需要投入较大的时间和资源才能完成。在此…

免费客服系统大揭秘!有什么好用的免费客服系统推荐?

贵的不一定是好的&#xff0c;合不合适才最重要&#xff01;有什么好用的免费客服系统吗&#xff1f;现下服务经济的发展的风潮已经席卷到了各行各业。 企业不仅要提供好的产品&#xff0c;还需要好的服务。客服系统作为企业与客户重要的沟通渠道&#xff0c;越来越多的企业正在…

Java版AI人工智能源码 Chat GPT智能AI源码

Java版AI人工智能源码 Chat GPT智能AI源码 技术框架 基于前后端分离架构以及Vue3、uni-app、SpringBoot2.5技术栈开发&#xff0c; 包含PC端、H5端、小程序端、APP端。 AI人工智能系统介绍 Chat GPT AI人工智能系统聚合对接国内外知名主流大语言模型接口及中转平台&#x…

2024深圳国际冲压自动化设备及技术展览会

2024深圳国际冲压自动化设备及技术展览会 2024 Shenzhen International Press Automation Equipment and Technology Exhibition 时间&#xff1a;2024年08月28-30日 地点&#xff1a;深圳国际会展中心&#xff08;新馆&#xff09; 预订以上展会详询陆先生 I38&#xff0…

JetBrains全家桶激活,分享 DataGrip 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; DataGrip 公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工…