Change color outside region of polyshape

15 visualizaciones (últimos 30 días)
David du Preez
David du Preez el 20 de Oct. de 2019
Comentada: BN el 4 de Nov. de 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 comentarios
David du Preez
David du Preez el 20 de Oct. de 2019
I have attached the data here,now
BN
BN el 4 de Nov. de 2019
what is x and y in your data?
how to produce them?

Iniciar sesión para comentar.

Respuesta aceptada

jonas
jonas el 20 de Oct. de 2019
Editada: jonas el 20 de Oct. de 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)
untitled.jpg

Más respuestas (0)

Categorías

Más información sobre Elementary Polygons en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by