MATLAB Answers

0

Change color outside region of polyshape

Asked by David du Preez on 20 Oct 2019 at 16:47
Latest activity Commented on by Behzad Navidi on 4 Nov 2019 at 18:38
I have gridded data between -40°S 0°S to 10°E to 45°E. I have manged to plot this data and add the borders of the countries over it. How can I mask the data that is plotted over the oceans. I only want to see the data over the land.

  5 Comments

jonas
on 20 Oct 2019 at 17:54
Easily done with inpolygon function. Upload the data so people can help you.
I have attached the data here,now
what is x and y in your data?
how to produce them?

Sign in to comment.

1 Answer

Answer by jonas
on 20 Oct 2019 at 18:05
Edited by jonas
on 20 Oct 2019 at 18:22
 Accepted Answer

load data.mat
% Gridded data
in = inpolygon(X,Y,lon,lat)
uvi_mean=uvi_mean';
uvi_mean(~in)=NaN;
pcolor(X,Y,uvi_mean);
shading interp
colormap jet
hold on
% used [lat lon] = borders('countries');
pgon = polyshape(lon,lat,'simplify',false);
plot(pgon,'FaceColor','none','edgecolor','k','facealpha',1)
You can get a nicer border by upsampling (interpolate) your matrix.
load data.mat
%upsample
uvi_mean=uvi_mean';
xn = min(X(:)):0.1:max(X(:));
yn = min(Y(:)):0.1:max(Y(:));
[Xn,Yn] = meshgrid(xn,yn);
VQ = interp2(X,Y,uvi_mean,Xn,Yn);
% Gridded data
in = inpolygon(Xn,Yn,lon,lat)
VQ(~in)=NaN;
pcolor(Xn,Yn,VQ);
shading interp
colormap jet
hold on
% used [lat lon] = borders('countries');
pgon = polyshape(lon,lat,'simplify',false);
plot(pgon,'FaceColor','none','edgecolor','k','facealpha',1)
untitled.jpg

  0 Comments

Sign in to comment.