主要内容

本页采用了机器翻译。点击此处可查看英文原文。

创建人口密度色域图

绘制一张显示 2000 年美国若干州人口密度的色域图。等值色图通过沿渐变色谱使用不同颜色,来表示空间区域内数值属性的值。

本页介绍了如何使用地图坐标轴(自 R2023a 起)和基于 axesm 的地图来创建类似的地图。有关地图坐标区与基于 axesm 的地图的比较(包括何时使用每种显示类型),请参阅选择二维地图显示

准备数据

准备示例中要使用的数据。

导入一个包含美国各州人口密度数据的 shapefile。该 shapefile 通过地理坐标系中的多边形来表示各州。

states = readgeotable("usastatelo.shp");

创建一个子表,其中包含纽约州以及构成新英格兰地区的各州:缅因州、新罕布什尔州、佛蒙特州、马萨诸塞州、康涅狄格州和罗德岛州。

names = ["New York" "Maine" "New Hampshire" "Vermont" "Massachusetts" ...
    "Connecticut" "Rhode Island"];
NEstates = geocode(names,states);

使用地图坐标区创建地图

使用地图坐标区对象创建一张分色图。

使用适用于美国本土的投影坐标参考系 (CRS) 建立一张地图。使用 EPSG 代码 26918 创建 CRS,该代码采用横轴墨卡托投影。

figure
proj = projcrs(26918);
newmap(proj)

在地图上显示各州的边界多边形。请根据表格中的人口数据指定颜色。

geoplot(NEstates,ColorVariable="PopDens2000")

创建一个颜色图,颜色从黄色渐变为红色。将颜色图应用到坐标区上。然后,添加一条颜色栏和一个标题。

cmap = flipud(autumn(height(NEstates)));
colormap(cmap)

colorbar
title("Population Density in 2000")

调整地理范围。

geolimits([40 48],[-76 -68])

Figure contains an axes object with type mapaxes. The mapaxes object contains an object of type polygon.

使用基于 axesm 的地图创建地图

使用一种适用于美国本土的投影法绘制一张地图。使用阿尔伯斯等面积圆锥投影,并为美国东北部的一个区域指定纬度和经度边界。

figure
axesm(MapProjection="eqaconic",MapParallels=[], ...
  MapLatLimit=[41 48],MapLonLimit=[-74 -66])

通过创建符号规范,根据人口密度为多边形分配颜色。使用从黄色渐变为红色的颜色图来指定颜色。

maxdensity = max([NEstates.PopDens2000]);
cmap = flipud(autumn(height(NEstates)));
polyColors = makesymbolspec("Polygon", ...
    {"PopDens2000",[0 maxdensity],"FaceColor",cmap});

在地图上显示各州的边界多边形。使用符号规范指定颜色。

geoshow(NEstates,SymbolSpec=polyColors)

将颜色图应用到坐标区上。然后,添加一条颜色栏和一个标题。

colormap(cmap)

colorbar
clim([0 maxdensity])
title("Population Density in 2000")

Figure contains an axes object. The axes object with title Population Density in 2000 contains 7 objects of type patch.

另请参阅

函数

主题