创建人口密度色域图
绘制一张显示 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])

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