gpt4 book ai didi

matlab - 在 MATLAB 中绘制 map 上的点

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:20 24 4
gpt4 key购买 nike

我想在纽约州 map 上绘制不同的位置。我当前的代码绘制了整个北美,因为我找不到如何只绘制一个州的方法。我试图将纬度和经度限制设置为纽约州,但它仍然给了我整个国家。

此外,当我执行 hold all(或 hold on)并尝试绘制点时,我会得到另一个弹出的图形,其中包含我指定的标题,但只是一个空白的白色方 block 。

另一个相关的问题是,一旦我绘制了点,我就必须知道它们是什么点。如果我在单独的元胞数组中有名称,我如何让 MATLAB 根据哪些坐标(存储在单独的列中)对应于哪个名称(如果名称存储在另一列中)来标记点?

%% Plot map
latlim = [39 47];
lonlim = [-81 -70];

ax = worldmap('USA');
load coast
geoshow(ax, lat, long,...
'DisplayType', 'polygon', 'FaceColor', [.45 .60 .30])
states = shaperead('usastatelo', 'UseGeoCoords', true, 'BoundingBox', [lonlim' latlim']);
axesm('lambert', 'MapLatLimit', latlim, 'MapLonLimit', lonlim);
faceColors = makesymbolspec('Polygon',...
{'INDEX', [1 numel(states)], 'FaceColor', ...
polcmap(numel(states))}); % NOTE - colors are random
geoshow(ax, states, 'DisplayType', 'polygon', ...
'SymbolSpec', faceColors);
figure('Color', 'white')

title('PM2.5 Site in New York State in 2012');

hold all

% Plot points
axesm('lambert', 'MapLatLimit', latlim', 'MapLonLimit', lonlim');
datalat = str2double(datalat);
datalon = str2double(datalon);
scatterm(datalat, datalon)

最佳答案

您可以使用 usamap('New York') 获取美国州 map ,并使用 textm 绘制覆盖文本。图中绘制了 25 个随机点及其标签。

下图

enter image description here

产生于

latlim = [39 47];
lonlim = [-81 -70];

figure('Color','w');
usamap('New York')
shi = shaperead('usastatehi', 'UseGeoCoords', true,...
'Selector',{@(name) strcmpi(name,'New York'), 'Name'});
geoshow(shi, 'FaceColor', [0.3 1.0, 0.675])
textm(shi.LabelLat, shi.LabelLon, shi.Name, 'HorizontalAlignment', 'center')

nb_point = 25;
LAT = latlim(1) + (latlim(2)-latlim(1)).*rand(nb_point,1);
LON = lonlim(1) + (lonlim(2)-lonlim(1)).*rand(nb_point,1);
h = geoshow(LAT, LON, 'DisplayType', 'Point', 'Marker', '+', 'Color', 'red');
textm(LAT, LON+0.3, num2str((1:nb_point)'), 'FontSize',14)

关于matlab - 在 MATLAB 中绘制 map 上的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19283464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com