- https://www.mathworks.com/matlabcentral/answers/422863-heatmap-on-world-map
- https://www.mathworks.com/matlabcentral/answers/722079-generate-a-geographical-heat-map
- https://www.mathworks.com/matlabcentral/answers/259878-plot-heat-map-on-map-using-latitude-longitude-and-my-data-value
- https://www.mathworks.com/matlabcentral/answers/49374-can-i-have-coloured-points-in-geoshow-like-in-a-scatter-plot
geodensityplot of CONUS, Alaska, and Hawaii
조회 수: 6 (최근 30일)
이전 댓글 표시
I am trying to create a geographical heat map aka geodensityplot with lattitude and longitude data and concentrations of metals imported from an excel file. I want to only show the continental united states with Alaska and Hawaii below.
How do I show those areas after creating the geodensityplot?
%% Import Excel sheet and assign variables to the column vectors.
% accomplished with ImportExcelMappingData.m
%% Map the USA including Alaska and Hawaii
% First create geodensity plot ie heatmap of mineral: Lithium
radiusInMeters = 50e3; % 50 km
dp = geodensityplot(LATITUDE,LONGITUDE,Li,'RadiusMode', 'manual', 'Radius',radiusInMeters, "FaceColor", 'interp');
colormap hot;
colorbar;
% Need to now take that generated geodensity plot and only show CONUS,
% Alaska and Hawaii
% I AM STUCK ON THIS PART!
% Read a shapefile, containing polygon shapes for each of the US states and the District of Columbia, into a geospatial table. Find the table rows for the conterminous USA, Alaska, and Hawaii.
states = readgeotable("usastatelo.shp");
rowConus = states.Name ~= "Hawaii" & states.Name ~= "Alaska";
rowAlaska = states.Name == "Alaska";
rowHawaii = states.Name == "Hawaii";
% Display each of the three regions on separate axes.
figure
ax = usamap('all');
set(ax,"Visible","off");
geoshow(ax(1),states(rowConus,:));
geoshow(ax(2),states(rowAlaska,:));
geoshow(ax(3),states(rowHawaii,:));
% Hide the frame
for k = 1:3
setm(ax(k),"Frame","off","Grid","off",...
"ParallelLabel","off","MeridianLabel","off");
showm(dp)
end
geoaxes(ax); % makes the Geographic axes object gx the current axes
basemap = geobasemap(ax); returns the basemap value for the geographic axes or chart specified by gx.
geobasemap(basemap) % sets the basemap of the current geographic axes or chart to the value specified by basemap.
% getm(gca,'MapProjection')
댓글 수: 0
채택된 답변
Yash
2023년 10월 13일
Hi Daniel Moran,
I understand that you want to plot concentrations of metals with latitude and longitude data but only want to show continental US with Hawaii and Alaska. I am assuming that LATITUDE, LONGITUDE and Li are Nx1 arrays. Refer to the code below:
states = readgeotable("usastatelo.shp");
rowConus = states.Name ~= "Hawaii" & states.Name ~= "Alaska";
rowAlaska = states.Name == "Alaska";
rowHawaii = states.Name == "Hawaii";
% Display each of the three regions on separate axes.
figure
ax = usamap('all');
set(ax,"Visible","off");
geoshow(ax(1),states(rowConus,:));
geoshow(ax(2),states(rowAlaska,:));
geoshow(ax(3),states(rowHawaii,:));
% Hide the frame
for k = 1:3
setm(ax(k),"Frame","off","Grid","off",...
"ParallelLabel","off","MeridianLabel","off");
end
for i = 1:numel(Li)
geoshow(LATITUDE(i), LONGITUDE(i), 'DisplayType', 'point', 'Marker', 'o', 'MarkerFaceColor', 'red', 'MarkerSize', Li(i));
end
Refer to the following resources for discussion on plotting heatmap onto an existing mapping:
I hope this helps!
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Geographic Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!