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

1 回表示 (過去 30 日間)
Behrooz Daneshian
Behrooz Daneshian 2023 年 2 月 17 日
回答済み: Star Strider 2023 年 3 月 15 日
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
  1 件のコメント
Ashfaq Ahmed
Ashfaq Ahmed 2023 年 3 月 15 日
You will find the map of Alaska and easily plot this using this toolbox -

サインインしてコメントする。

回答 (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 Center および File ExchangeGeographic Plots についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by