How to define the boundary of a countour
3 views (last 30 days)
Show older comments
I am using this line of code to plot my contour of sea surface temperature, it is a rectangular box. [C1, h1] = contourf (X, Y, Z, [0:1:35], 'LineStyle', 'none' );
How do I trim off the areas that extends to the land with a polygon?
I tried to use "patch", but it does not work well, when the plot from the Atlantic Ocean is put together with the plots from other ocean basins.
Is there a way I can set X, Y, Z values (gridded data) to be NaN for the grids that are outside the polygon?
Thank you.
4 Comments
Image Analyst
on 23 Dec 2014
Edited: Image Analyst
on 23 Dec 2014
Is your data an RGB image? Or is it in some other form? And explain "areas that extends to the land" - how do we know which pixels are land or not land? Do you have a binary image that defines land/not-land pixels?
Accepted Answer
Chad Greene
on 24 Dec 2014
2 Comments
Chad Greene
on 26 Dec 2014
You can simply set the limits of the map when you call worldmap. Below I set the limits from 75S to 75N and 80W to 20E.
[lon,lat] = meshgrid(linspace(-179, 179, 180),...
linspace(-89.5,89.5, 180));
z = peaks(180);
z(landmask(lat,lon))=NaN;
worldmap([-75 75],[-80 20])
pcolorm(lat,lon,z)
More Answers (1)
Image Analyst
on 23 Dec 2014
Do you have the Image Processing Toolbox? If so, you can use poly2mask() to create a mask of land/not-land. Then you can mask the image.
% Mask the image using bsxfun() function
maskedRgbImage = bsxfun(@times, rgbImage, cast(mask, class(rgbImage)));
2 Comments
Image Analyst
on 23 Dec 2014
Then you can create a binary mask with a double for loop. You can still use bsxfun() to do the masking though - that does not require the toolbox.
See Also
Categories
Find more on Map Display in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!