How can I put Alaska map as a background behind my contour plots?

5 次查看(过去 30 天)
Hi all,
Using the following code I could develope countour maps showing freezing depth across the Alaska states. How can I plot these contour maps in a way that the background would be the Alaska map? The x and y axis are longitude and latitude respectively.
clear
close all
clc
load('POFDE.mat');
data = cell2mat(POFDE);
[lat,lon] = meshgrid(unique(data(:,1)),unique(data(:,2)));
for i = 1:(size(data, 2)-2)
figure
I = scatteredInterpolant(data(:,[1 2]), data(:,i+2));
contourf(lon,lat,min(1,max(0,I(lat,lon))),'ShowText','on')
colorbar
title(['The probability of frost depth exceedance of \Omega_{\delta} = ' num2str(i) ' feet'])
exportgraphics(gca, sprintf('FrostPlot_%d_feet.png', i))
end

回答(2 个)

the cyclist
the cyclist 2023-2-18
If you have the Mapping Toolbox, you can use the usamap function to make an Alaska map, and superimpose your other data on it.
  1 个评论
Behrooz Daneshian
Behrooz Daneshian 2023-2-18
Thank you for your reply. However, when I use usamap function and hold on together, contours will not be displayed!
clear
close all
clc
load('POFDE.mat');
data = cell2mat(POFDE);
[lat,lon] = meshgrid(unique(data(:,1)),unique(data(:,2)));
for i = 1:(size(data, 2)-2)
figure
usamap("Alaska")
states = readgeotable("usastatehi.shp");
row = states.Name == "Alaska";
alaska = states(row,:);
geoshow(alaska,"FaceColor",[0.3 1.0, 0.675])
textm(alaska.LabelLat,alaska.LabelLon,alaska.Name, ...
"HorizontalAlignment","center")
hold on;
I = scatteredInterpolant(data(:,[1 2]), data(:,i+2));
contourm(lon,lat,min(1,max(0,I(lat,lon))),'ShowText','on')
colorbar
title(['The probability of frost depth exceedance of \Omega_{\delta} = ' num2str(i) ' feet'])
exportgraphics(gca, sprintf('FrostPlot_%d_feet.png', i))
hold off
end

请先登录,再进行评论。


Star Strider
Star Strider 2023-3-15
You have ‘lat’ and ‘lon’ reversed in the first two arguments to the contourm call.
Reversing them —
% clear
% close all
% clc
% load('POFDE.mat');
load(websave('POFDE','https://www.mathworks.com/matlabcentral/answers/uploaded_files/1299285/POFDE.mat'))
data = cell2mat(POFDE);
[lat,lon] = meshgrid(unique(data(:,1)),unique(data(:,2)));
for i = 1:(size(data, 2)-2)
figure
usamap("Alaska")
states = readgeotable("usastatehi.shp");
row = states.Name == "Alaska";
alaska = states(row,:);
geoshow(alaska,"FaceColor",[0.3 1.0, 0.675])
textm(alaska.LabelLat,alaska.LabelLon,alaska.Name, ...
"HorizontalAlignment","center")
hold on;
I = scatteredInterpolant(data(:,[1 2]), data(:,i+2));
contourm(lat,lon,I(lat,lon), 'LineWidth',2,'ShowText','on')
colormap(turbo)
colorbar
title(['The probability of frost depth exceedance of \Omega_{\delta} = ' num2str(i) ' feet'])
% exportgraphics(gca, sprintf('FrostPlot_%d_feet.png', i))
hold off
end
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
Warning: Duplicate data points have been detected and removed - corresponding values have been averaged.
.

类别

Help CenterFile Exchange 中查找有关 Geographic Plots 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by