2013-10-09 205 views
4

我想繪製紐約州地圖上的不同位置。我現在的代碼繪製了整個北美,因爲我找不到如何繪製一個狀態。我試圖設置紐約州的經度和緯度限制,但它仍然給我整個國家。此外,當我做hold all(或hold on)並嘗試繪製點時,我得到另一個彈出與我指定的標題,但只是一個空白的白色正方形的數字。在MATLAB中的地圖上繪製點

另一個相關的問題是,一旦我得到了積分點,我必須知道他們是什麼點。如果我在單獨的單元格數組中存在名稱,那麼如何根據哪些座標(存儲在單獨列中)與哪個名稱(如果名稱存儲在另一列中)對應,讓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) 

回答

3

你可以得到一個美國國家地圖usamap('New York')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) 
+0

產生你能解釋一下在你標記點的一部分嗎?我有一個單元格陣列中的名稱。 – shizishan

+0

正如文檔所述:_string可能是一個單元格數組,其元素數與lat和lon相同。 (爲了向後兼容,字符串也可以是二維字符數組,使size(string,1)與numel(lat))匹配。如果你在命令窗口中運行'num2str((1:nb_point)'),你會看到文本的結構,就這麼簡單! – marsei