从表数据创建独立的地理气泡图
此示例说明如何使用 geobubble 函数从表数据创建独立的地理气泡图。在示例中:
将新英格兰的郡数据和莱姆病数据加载到一个表中。
基于表创建一个地理气泡图。
通过更改气泡的大小来可视化人口。
通过更改气泡的颜色来可视化莱姆病病例的数量。
由 geobubble 函数创建的独立地理气泡图不支持自定义,例如更改气泡的线宽和透明度、添加文本和线条注解以及移动大小和颜色图例。要创建支持更多自定义的类似图,请使用 geoaxes 和 bubblechart 函数在地理坐标区中创建气泡图。有关使用 geoaxes 和 bubblechart 函数的示例,请参阅Combine Bubble Chart with Other Graphics in Geographic Axes。
加载数据
加载一个包含新英格兰郡数据和莱姆病数据的表。该表包含以下表变量:
Latitude和Longitude- 分别为每个郡的纬度和经度坐标。Population2010- 2010 年各郡的人口。Cases2010- 2010 年各郡的莱姆病病例数。
counties = readtable("counties.xlsx");创建地理气泡图
使用 geobubble 函数创建一个地理气泡图。将表作为第一个参量传递给该函数,后跟包含纬度和经度坐标的表变量。在 gb 中返回 GeographicBubbleChart 对象。然后,使用 geolimits 函数调整地理范围。默认情况下,所有气泡的大小和颜色都相同。
gb = geobubble(counties,"Latitude","Longitude"); geolimits([40.8 47.0],[-76.71 -63.22])

指定气泡大小
通过更改气泡的大小来可视化郡人口。
将气泡图对象的 SizeVariable 属性设置为包含人口数据的表变量。当您使用表变量指定气泡大小时,气泡图会包含大小图例。
gb.SizeVariable = "Population2010";
有关控制气泡大小的详细信息,请参阅控制独立地理气泡图中的气泡。
指定气泡颜色
通过更改气泡的颜色来可视化莱姆病病例的数量。
对颜色数据进行分类
地理气泡图需要分类颜色数据。通常,您可以使用 categorical 或 discretize 函数来创建分类数组。
使用 discretize 函数对莱姆病病例的数量进行分类。对 bin 使用以下名称和边界:
"Low"- 0 到 50 个病例"Medium"- 51 到 100 个病例"High"- 101 到 500 个病例
cases = counties.Cases2010; categories = ["Low","Medium","High"]; binnedCases = discretize(cases,[0 50 100 500],"categorical",categories);
将分类数据添加到气泡图对象的源表中的新变量。然后,将气泡图对象的 ColorVariable 属性设置为新变量。当您使用表变量指定气泡颜色时,气泡图会包含颜色图例。
gb.SourceTable.BinnedCases2010 = binnedCases;
gb.ColorVariable = "BinnedCases2010";
解析未定义的颜色数据
颜色图例包含一个未定义的类别,因为独立的地理气泡图对象不会忽略未定义的颜色值。当原始数据(在本例中为 Cases2010 变量)包含空值或位于 bin 边界之外的值时,可能会出现未定义的颜色类别。调查并解析未定义的类别。
查找包含未定义颜色值的表行。然后,找出与表行相关联的莱姆病病例数。
tf = isundefined(gb.SourceTable.BinnedCases2010); idx = find(tf); % table rows gb.SourceTable.Cases2010(idx) % number of cases
ans = 514
分类数据只考虑范围 [0, 500] 内的病例,但此郡有 514 个病例。对数据重新分类,这次使用 bin 边界,其上界为 514。
rebinnedCases = discretize(cases,[0 50 100 514],"categorical",categories);用重新分类的数据替换源表中的分类数据。更新后的颜色图例不包含未定义的类别。
gb.SourceTable.BinnedCases2010 = rebinnedCases;

指定气泡颜色
通过使用与类别相同数量的颜色创建颜色图来指定新气泡颜色。然后,通过设置气泡图对象的 BubbleColorList 属性来更改气泡的颜色。
n = length(categories); cmap = autumn(n); gb.BubbleColorList = cmap;

气泡图使用红色表示病例数量少,使用黄色表示病例数量多。通过对类别重新排序来切换红色和黄色。
gb.SourceTable.BinnedCases2010 = ... reordercats(gb.SourceTable.BinnedCases2010,["High","Medium","Low"]);

有关控制气泡颜色的详细信息,请参阅控制独立地理气泡图中的气泡。
指定图和图例标题
向气泡图添加一个标题。
title("Lyme Disease in New England (2010)")默认情况下,图例标题与表变量的名称匹配。通过设置气泡图对象的 SizeLegendTitle 和 ColorLegendTitles 属性来更改大小和颜色图例的标题。
gb.SizeLegendTitle = "County Population"; gb.ColorLegendTitle = "Lyme Disease Severity";

细化表数据
许多大气泡是红色,这表明更多莱姆病病例发生在人口稠密的地区。更新气泡图以可视化人口患病率最高的位置。
通过计算每 1000 人的病例数来归一化数据。
casesPer1000 = counties.Cases2010 ./ counties.Population2010 * 1000;
将归一化数据添加到源表的一个新变量。然后,通过将 SizeVariable 属性设置为该新变量来更新气泡图。更新大小图例的标题。
gb.SourceTable.CasesPer1000 = casesPer1000; gb.SizeVariable = "CasesPer1000"; gb.SizeLegendTitle = "Cases Per 1000";

具有归一化数据的气泡图显示,人均最高病例数的地理分布不同于具有非归一化数据的气泡图。