基于表格数据创建地理气泡图
地理气泡图是一种以可视化方式在地图上叠加显示数据的图形。对于具有地理特征的数据,这些图可以提供重要的上下文信息。在此示例中,您将文件以表的形式导入 MATLAB® 中,并基于表变量(列)创建地理气泡图。然后,再使用表中的数据来可视化显示数据的各个方面,例如人口数量大小。
以表的形式导入文件
加载样本文件 counties.xlsx
,其中包含新英格兰各郡的人口数据和莱姆病病例数据。使用 readtable
将数据读入一个表中。
counties = readtable('counties.xlsx');
创建基本地理气泡图
创建一个地理气泡图,显示新英格兰各郡的位置。将该表指定为第一个参数 counties
。地理气泡图将该表存储在其 SourceTable
属性中。使用表的 'Latitude'
和 'Longitude'
列指定位置。该图自动设置底层地图(称为底图)的纬度和经度范围,以仅包括由这些数据表示的区域。将 GeographicBubbleChart
对象赋给变量 gb
。在创建图后,可使用 gb
对其进行修改。
figure gb = geobubble(counties,'Latitude','Longitude');
可以在 geobubble
函数显示的底图上平移和缩放。
在图上可视化显示各郡人口
用气泡大小(直径)表示不同郡的相对人口。将表中的 Population2010
变量指定为 SizeVariable
参数的值。在所得到的地理气泡图中,气泡的不同大小代表着人口的多少。该图包括了一个描述气泡直径与人口数量对应关系的图例。使用 geolimits
调整图的范围。
gb = geobubble(counties,'Latitude','Longitude',... 'SizeVariable','Population2010'); geolimits([39.50 47.17],[-74.94 -65.40])
geobubble
在 SizeLimits
属性指定的值的范围内对气泡直径进行线性缩放。
可视化显示各郡莱姆病病例
使用气泡颜色显示某郡在给定年份的莱姆病病例数。要显示此类型的数据,geobubble
函数要求所提供的数据为 categorical
值。原始表中的各列数据都不是分类数据,但您可以创建一个分类数据。例如,您可以使用 discretize
函数基于 Cases2010
变量中的数据创建一个分类变量。名为 Severity
的新变量将数据分为三个类别:Low、Medium 和 High。使用这个新变量作为 ColorVariable
参数。这些更改会修改存储在 SourceTable
属性中的表,该表是工作区中原始表 counties
的副本。对 GeographicBubbleChart
对象中存储的表进行更改可避免原始数据受到影响。
gb.SourceTable.Severity = discretize(counties.Cases2010,[0 50 100 500],... 'categorical', {'Low', 'Medium', 'High'}); gb.ColorVariable = 'Severity';
处理未定义的数据
对严重性信息绘图时,颜色图例中将出现第四个类别:undefined
。当您转换为 categorical
的数据包含空值或超出您所定义类别的范围的值时,会显示此类别。将光标悬停在未定义的气泡上,确定未定义 Severity
值的原因。数据提示显示,气泡代表莱姆病表第 33 行中的值。
检查用于 Severity 的变量 Cases2010 的值,即莱姆病表第 33 行中的第 12 个变量。
gb.SourceTable(33,12)
ans=table
Cases2010
_________
514
High
类别定义为介于 100 和 500 之间的值。但是,Cases2010 变量的值是 514。要消除此未定义的值,请重新设置 High 类别的上限以包含此值。例如,使用 5000。
gb.SourceTable.Severity = discretize(counties.Cases2010,[0 50 100 5000],... 'categorical', {'Low', 'Medium', 'High'});
与颜色变量不同,当 geobubble
在大小、纬度或经度变量中遇到未定义的数字 (NaN) 时,它会忽略该值。
选择气泡颜色
使用颜色梯度来表示 Low-Medium-High 分类。geobubble
在 BubbleColorList
属性中将颜色存储为 m×3 RGB 值列表。
gb.BubbleColorList = autumn(3);
对气泡颜色重新排序
将指示高严重性的颜色更改为红色而不是黄色。要更改色序,您可以更改类别的顺序,也可以更改 BubbleColorList
属性中列出的颜色的顺序。例如,最初类别顺序为 Low-Medium-High。使用 reordercats
函数将类别顺序更改为 High-Medium-Low。颜色图例中的类别随之更改。
neworder = {'High','Medium','Low'}; gb.SourceTable.Severity = reordercats(gb.SourceTable.Severity,neworder);
添加标题
当您使用大小和颜色变量显示地理气泡图时,该图会显示大小图例和颜色图例以指示相对大小和颜色的含义。当您指定表作为参数时,geobubble
会自动使用表变量名称作为图例标题,但您可以使用属性来指定其他标题。
title 'Lyme Disease in New England, 2010' gb.SizeLegendTitle = 'County Population'; gb.ColorLegendTitle = 'Lyme Disease Severity';
细化处理图数据
观察莱姆病数据,呈现的趋势似乎是更多病例发生在人口密度较大的地区。查看人口患病率最高的地点可能更有意义。计算每 1000 人中出现的病例数并显示在图上。
gb.SourceTable.CasesPer1000 = gb.SourceTable.Cases2010 ./ ... gb.SourceTable.Population2010 * 1000; gb.SizeVariable = 'CasesPer1000'; gb.SizeLegendTitle = 'Cases Per 1000';
现在,气泡大小与之前有不同的意义。人口最多的地区与病例严重程度相对吻合。然而,如果按人口对病例数进行归一化处理,则人口患病风险最高的地点呈现不同的地理分布。
另请参阅
geobubble
| table
| readtable
| reordercats
| categorical
| discretize
| GeographicBubbleChart 属性