主要内容

从表数据创建独立的地理气泡图

此示例说明如何使用 geobubble 函数从表数据创建独立的地理气泡图。在示例中:

  • 将新英格兰的郡数据和莱姆病数据加载到一个表中。

  • 基于表创建一个地理气泡图。

  • 通过更改气泡的大小来可视化人口。

  • 通过更改气泡的颜色来可视化莱姆病病例的数量。

geobubble 函数创建的独立地理气泡图不支持自定义,例如更改气泡的线宽和透明度、添加文本和线条注解以及移动大小和颜色图例。要创建支持更多自定义的类似图,请使用 geoaxesbubblechart 函数在地理坐标区中创建气泡图。有关使用 geoaxesbubblechart 函数的示例,请参阅Combine Bubble Chart with Other Graphics in Geographic Axes

加载数据

加载一个包含新英格兰郡数据和莱姆病数据的表。该表包含以下表变量:

  • LatitudeLongitude - 分别为每个郡的纬度和经度坐标。

  • 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";

有关控制气泡大小的详细信息,请参阅控制独立地理气泡图中的气泡

指定气泡颜色

通过更改气泡的颜色来可视化莱姆病病例的数量。

对颜色数据进行分类

地理气泡图需要分类颜色数据。通常,您可以使用 categoricaldiscretize 函数来创建分类数组。

使用 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)")

默认情况下,图例标题与表变量的名称匹配。通过设置气泡图对象的 SizeLegendTitleColorLegendTitles 属性来更改大小和颜色图例的标题。

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";

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

另请参阅

属性

属性

主题