MATLAB Answers

# Change color outside region of polyshape

6 views (last 30 days)
David du Preez on 20 Oct 2019
Commented: Behzad Navidi on 4 Nov 2019
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

Show 2 older comments
jonas on 20 Oct 2019
Easily done with inpolygon function. Upload the data so people can help you.
David du Preez on 20 Oct 2019
I have attached the data here,now
Behzad Navidi on 4 Nov 2019
what is x and y in your data?
how to produce them?

Sign in to comment.

### Accepted Answer

jonas on 20 Oct 2019
Edited: jonas on 20 Oct 2019
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)

#### 0 Comments

Sign in to comment.

### More Answers (0)

Sign in to answer this question.