多变量可视化——QGIS二元分区着色图

本文介绍了如何使用QGIS创建二元分区着色图,以揭示肥胖与糖尿病的空间关系。通过混合图层法和数据驱动法两种方法,详细展示了每个步骤,包括数据处理、颜色配置和地图渲染,帮助理解多变量地图的制作技巧。
部署运行你感兴趣的模型镜像

二元分区着色图(Bivariate Choropleth Map)是多变量地图的一种,可以用颜色在地图上展现两种现象的空间关系,例如研究人口密度和犯罪率的关系、呼吸系统疾病发生率与PM2.5之间的关系、人口密度与人均收入的关系等。

 

 

文本将使用QGIS演示二元分区着色图的两种实现方法:混合图层法和数据驱动法。

 

 01 示范数据

 

本文选用美国县级肥胖症和糖尿病为示范数据,用二元分区着色图展示肥胖与糖尿病之间的空间关系。

 

数据和配色文件下载链接:

https://pan.baidu.com/s/1eQXP1cwn611pr6euFShiOA 

提取码:clbe

 

使用QGIS打开示范数据“cnty”后,观察到属性数据如下图:

 

 

字段说明:

 

NAME:县名称;

STATE_NAME:所属的州;

Pct_Obese:肥胖人口占县总人口的百分比;

Pct_Diabet:患糖尿病人口占县总人口的百分比;

Diabetes_C:将Pct_Diabet按照等数量分为三个等级,用1表示糖尿病低发病率地区,2表示中等地区,3表示高发地区;

Obesity_Cl:将Pct_Obese按照等数量分为三个等级,用1表示肥胖症低发地区,2表示中等发病率地区,3表示高发地区;

BivariateC:Diabetes_C和Obesity_Cl字段的组合,表示糖尿病和肥胖症的组合关系,例如属性值“Class 1”代表两种病发病率均为低的县,“Class 2”代表糖尿病低发病率、肥胖症中等发病率……以此类推。

 

 02 混合图层法

 

使用混合图层实现二元分区着色图的过程比较简单,即将两个变量分别着色,然后用图层混合模式实现两种着色的叠加。

 

首先,在图层面板中右键点击“cnty”,从弹出菜单选择【创建图层副本】,将图层复制为两份,并将两个cnty图层分别重命名为“糖尿病”和“肥胖症”。

 

 

打开“糖尿病”图层的属性对话框,在符号化标签中,选择“分类”渲染,字段【值】选择“Diabetes_C”,点击下方的【OK】按钮进行分类,默认情况下QGIS为每个类别随机分配颜色。

 

 

二元分区着色图由于结合了两个变量,每个变量又分成多个类别,往往导致地图需要表达的颜色比较多。如本例中糖尿病发病率和肥胖症发病率各分为3个类别,两两结合,将产生低糖尿病发病率+低肥胖发病率、低糖尿病发病率+中等肥胖发病率、低糖尿病发病率+高肥胖发病率等9种组合,要在一幅地图中有效地区分代表这9种组合的颜色,需要两个变量增长方向及对称轴三个方向上的颜色具有区较明显区分度,根据制图学经验,配色基本原则总结如下:

  1. 两种色带的色调应保持较大差异,最好取互补色或者互补色附近的颜色,以便更好区分两种现象在地图上的分布;

  2. 两种色带的起始颜色应相同,通常建议选用比较亮的中性颜色,如亮灰色;

  3. 颜色越深、饱和度越高,表示变量值越大;

 

 

本文选择浅灰(RGB:243, 243, 243)、浅蓝(RGB:180, 211, 225)、深蓝(RBG:80, 157, 194)三个颜色表达糖尿病发病率的从低到高,对应属性字段中1-3的取值,如上面截图所示。

 

同样,在图层面板中选择“肥胖症”图层,对其“Obesity_Cl”字段使用“分类”渲染,分别使用浅灰(RGB:243, 243, 243)、黄色(RGB:243, 230, 179)、深黄(RGB:243, 179, 0)表示1-3等级的肥胖症发病率,如下图:

 

 

至此,我们分别做好了两个图层的分区着色图,接下来使用图层混合模式将颜色混合。

 

在图层面板中将“糖尿病”和“肥胖症”两个图层均设置为可见状态,选择“糖尿病”图层(确保该图层位于上方)。

 

 

在图层样式面板中,下拉找到图层渲染,选择“乘(正片叠底)”混合模式。

 

 

一幅展现糖尿病与肥胖症发病率的空间关系二元分区着色图就完成了:

 

 

 

使用混合模式虽然能够快速生成二元分区着色图的配色表,但是从混合模式的实现方式和地图颜色可以看出:

 

  • 合成以后的地图难以对单独某个色块做颜色上的调整,因为修改图层的一个色块至少改变与之混合的三个结果颜色;

     

  • 由于混合模式的原理是将上下两个图层按照一定算法组合成新的颜色,因此,结果图层中一般难以看到图层的原始配色。例如,本文的“糖尿病”和“肥胖症”两个图层均用浅灰色(RGB:243, 243, 243)来表示最小值分类,即糖尿病低发病率和肥胖症低发病率的地区,通过“乘(正片叠底)”混合以后,结果图层不再出现(RGB:243, 243, 243),双低(糖尿病低发病率和肥胖症低发病率的地区)的表达颜色变为RGB:232, 232, 232,是各颜色通道归一化以后的乘积,即(243/255)*(243/255)=0.91,0.91*255=232,因此更加难以控制地图整体的配色效果。

 

 03 数据驱动法

 

数据驱动的原理很简单,即先将单变量分组,然后将分组结果合并存储到新字段中,再对该字段使用“分类”渲染方式进行渲染。

 

例如本文所选数据,先将糖尿病发病率分为高、中、低三个等级,用3、2、1表示,再将肥胖症发病率也分为高、中、低三个等级,同样用3、2、1表示,最后计算二者的组合:11表示双低(低糖尿病低肥胖症),归为class 1;12表示低糖尿病中肥胖症,归为class 2;……以此类推,共组合为9种类别。

 

注意,一般拿到的原始数据有时候并未提供类似的分组字段,需要根据研究情况自行构建,具体的数据处理过程本文不再赘述。

 

接下来用“分类”渲染所得到的类别字段。

 

右键点击图层面板中的“糖尿病”或者“肥胖症”图层,弹出菜单选择【创建图层副本】,将新图层名称改为“糖尿病和肥胖症”,如下图:

 

 

选中“糖尿病和肥胖症”图层,在图层样式面板中选择“分类”渲染,字段选择“Bivariate”,即组合分类,点击下方的【分类】按钮,得到默认的随机颜色地图。

 

 

将分类框中无效的数值(-999)和其他值删掉,保留9种组合分类,分别双击每个类别对应的色块,对颜色进行调整,得到如下效果:(此配色方案在示范数据压缩包中:9类样式.qml)

 

 

从上图可以很明显看到,二元分区着色图有效地表达出美国东南部是糖尿病和肥胖症高发地区,需要进一步研究和分析其背后的原因。

 

 04 小结

 

二元分区着色图是地理空间分析中多变量分析的方法之一,其使用的前提条件是两个变量与空间单元是否拆分无关,例如本例中两种疾病发病率,把一个县的划分为任意两个区域,他们的疾病发病率不会改变;对于拆分空间单元会导致数据发生变化的统计数据,则不适合使用该方法,例如面积、周长等。

 

另外,研究表明,人眼识别颜色的数量最佳区间为4-6种颜色,因此建议每个变量的分类不大于3,即组合后的颜色数量不大于9,否则容易导致读图效率不高、重点信息不突出等问题。

 

在ArcGIS Pro的符号系统中,提供了双变量颜色(Bivariate colors)功能,因此使用ArcGIS Pro制作双变量地图更加快捷方便一些,感兴趣的朋友也可以申请试用体验一下。

 

 


参考资料:

[1]  https://en.wikipedia.org/wiki/Choropleth_map。

[2] https://www.esri.com/arcgis-blog/products/mapping/mapping/making-bivariate-choropleth-maps-with-arcmap/。

[3] https://www.joshuastevens.net/cartography/make-a-bivariate-choropleth-map/。

[4] Brewer, C.A., Basic Mapping Principles for Visualizing Cancer Data Using Geographic Information Systems (GIS). American journal of preventive medicine, 2006. 30(2): p. S25-S36.

[5] Buckley, A., Understanding Statistical Data for Mapping Purposes.https://www.esri.com/about/newsroom/arcuser/understanding-statistical-data-for-mapping-purposes/。

版权声明

 

本文欢迎转载,转载时请注明出处。

 

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值